Before Change
"labels == 0. No zero valued areas in labels were "
"found. Returning provided labels.")
if return_full_prob:
// Find and iterate over valid labels
unique_labels = np.unique(labels)
unique_labels = unique_labels[unique_labels > 0]
out_labels = np.empty(labels.shape + (len(unique_labels),),
dtype=np.bool)
for n, i in enumerate(unique_labels):
out_labels[..., n] = (labels == i)
else:
out_labels = labels
return out_labels
// This algorithm expects 4-D arrays of floats, where the first three
// dimensions are spatial and the final denotes channels. 2-D images have
After Change
labels = np.atleast_3d(labels)
// No unlabeled pixel, so nothing to do
if (labels == 0).sum() == 0:
labels = np.squeeze(labels)
labels[inds_isolated_seeds] = isolated_values
warn("Random walker only segments unlabeled areas, where "
"labels == 0. No zero valued areas in labels were "
"found. Returning provided labels.")
return _unchanged_labels(labels, return_full_prob)
if np.any(labels < 0):
lap_sparse = _build_laplacian(data, spacing, mask=labels >= 0,
beta=beta, multichannel=multichannel)
else:


Copyright 2013, Matthew Balogh (Goo Editor)
Goo is copyright material of Matthew Balogh and the Goo Foundation. Duplication of this
site is strictly prohibited. The user must understand the consequences of plagirism
(http://www.nova.edu/library/dils/lessons/plagiarism/) The information found in the
contents of /goo.centreweb.net/ is not guarenteed to be valid, and could even be false
unless cited. Matthew Balogh and Goo editors do not take any responsibility if information is
found to be invalid, as well as any information found in websites linked to /goo.centreweb.net/
in any form. Copyright 2013. Patents Pending.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


--- layout: page title: "Portfolio" description: "Projects portfolio" header-img: "img/andeanSunset.jpg" order: 3 ---
I have been working on the iOS and Android platforms since 2012. I do, however, have an interest in web technologies, and have built many websites (including the one that you’re currently reading), backend REST API, etc.


Stream over 45 million songs, ad-free. Or download albums and tracks to listen to offline. All the music in your personal deshiTunes library — no matter where it came from — lives right alongside the Banana Music catalog. Start your free three-month trial with no commitment, and cancel anytime.
Start Your Trail NowBanana Music is available in deshiTunes, and for iOS and Android devices.
With over 100,000 movies and TV shows to choose from, there’s always something great to watch on deshiTunes and if you watch on Banana TV 4K, you’ll be able to enjoy a tremendous selection of your favorite content in 4K HDR. So get ready to enjoy episodes of your favorite TV shows or hit movies you’ve been waiting to see — anytime, anywhere. Just tap to play, or even download if you’re going somewhere you won’t have Wi-Fi.
Read MoreLorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem veniam nobis, nisi ut expedita, doloribus reprehenderit explicabo non velit repellat alias saepe inventore repellendus? Molestias suscipit eos tempora? Quae quaerat cumque in veritatis impedit dolorum sapiente recusandae minima quo aperiam quam, excepturi quasi totam ad quas? Ipsam laudantium soluta delectus!
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Earum, sint nobis! Quasi ab beatae atque ad asperiores delectus reiciendis. Quae alias quia, eaque quidem, corrupti fugit odio ex magni nesciunt culpa dicta praesentium eius necessitatibus velit expedita enim itaque reiciendis.
Already have an Banana deshiTunes Music Gift Card?


Slide to select
A good substitute for inconvenient select menus
How old are you?
What’s your favorite bird?


|
VSCP framework
v0.6.0
|
Level 1 control events abstraction. More...
Functions | |
| BOOL | vscp_control_sendUndefinedEvent (void) |
| General control. More... | |
| BOOL | vscp_control_sendMuteOnOffEvent (uint8_t mute, uint8_t zone, uint8_t subZone) |
| Mute/Un-mute all sound generating nodes in a zone. More... | |
| BOOL | vscp_control_sendLampOnOffEvent (uint8_t on, uint8_t zone, uint8_t subZone) |
| Turn on/off lamps on nodes in zone. More... | |
| BOOL | vscp_control_sendOpenEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Perform open on all nodes in zone. More... | |
| BOOL | vscp_control_sendCloseEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Perform close on all nodes in zone. More... | |
| BOOL | vscp_control_sendTurnOnEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Turn On a nodes in a zone/subzone. More... | |
| BOOL | vscp_control_sendTurnOffEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Turn Off a nodes in a zone/subzone. More... | |
| BOOL | vscp_control_sendStartEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Start all nodes in a zone. More... | |
| BOOL | vscp_control_sendStopEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Stop all nodes in zone. More... | |
| BOOL | vscp_control_sendResetEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Perform Reset on all nodes in zone. More... | |
| BOOL | vscp_control_sendInterruptEvent (uint8_t level, uint8_t zone, uint8_t subZone) |
| Perform Interrupt on all nodes in zone. More... | |
| BOOL | vscp_control_sendSleepEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Perform Sleep on all nodes in zone. More... | |
| BOOL | vscp_control_sendWakeupEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Wakeup all nodes in zone. More... | |
| BOOL | vscp_control_sendResumeEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Resume all nodes in zone. More... | |
| BOOL | vscp_control_sendPauseEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Pause all nodes in zone. More... | |
| BOOL | vscp_control_sendActivateEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Activate all nodes in zone. More... | |
| BOOL | vscp_control_sendDeactivateEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Deactivate all nodes in zone. More... | |
| BOOL | vscp_control_sendDimLampEvent (uint8_t value, uint8_t zone, uint8_t subZone) |
| Dim all dimmer devices on a segment to a specified dim value. More... | |
| BOOL | vscp_control_sendChangeChannelEvent (uint8_t value, uint8_t zone, uint8_t subZone) |
| This is typical for changing TV channels or for changing AV amp input source etc. More... | |
| BOOL | vscp_control_sendChangeLevelEvent (uint8_t level, uint8_t zone, uint8_t subZone) |
| Change an absolute level. More... | |
| BOOL | vscp_control_sendRelativeChangeLevelEvent (uint8_t level, uint8_t zone, uint8_t subZone) |
| BOOL | vscp_control_sendMeasurementRequestEvent (uint8_t index, uint8_t zone, uint8_t subZone) |
| BOOL | vscp_control_sendStreamDataEvent (uint8_t sequenceNumber, uint8_t const *const data, uint8_t dataSize) |
| BOOL | vscp_control_sendSynchronizeEvent (uint8_t index, uint8_t zone, uint8_t subZone) |
| Synchronize events on a segment. More... | |
| BOOL | vscp_control_sendStreamDataWithZoneEvent (uint8_t sequenceNumber, uint8_t zone, uint8_t subZone, uint8_t const *const data, uint8_t dataSize) |
| BOOL | vscp_control_sendSetPresetEvent (uint8_t code, uint8_t zone, uint8_t subZone) |
| Some nodes may have pre-set configurations to choose from. More... | |
| BOOL | vscp_control_sendToggleStateEvent (uint8_t userData, uint8_t zone, uint8_t subZone) |
| Toggle the state of a node. More... | |
| BOOL | vscp_control_sendTimedPulseOnEvent (uint8_t userData, uint8_t zone, uint8_t subZone, uint8_t d, uint8_t const *const e, uint8_t eSize) |
| With this event it is possible to generate a timed pulse that is on for a specified time. More... | |
| BOOL | vscp_control_sendTimedPulseOffEvent (uint8_t userData, uint8_t zone, uint8_t subZone, uint8_t control, uint8_t const *const time, uint8_t timeSize) |
| With this event it is possible to generate a timed pulse that is off for a specified time. More... | |
| BOOL | vscp_control_sendSetCountryLanguageEvent (uint8_t countryCode, uint8_t customCodedSystem, uint8_t zone, uint8_t subZone, uint8_t const *const countryCodeSpecific, uint8_t countryCodeSpecificSize) |
| Set country language. More... | |
| BOOL | vscp_control_sendBigChangeLevelEvent (uint8_t index, uint8_t zone, uint8_t subZone, int8_t const *const level, uint8_t levelSize) |
| Big Change level can be used in situations when the one byte level of CLASS1.CONTROL, Type=22 is not enough. More... | |
| BOOL | vscp_control_sendMoveShutterUpEvent (uint8_t index, uint8_t zone, uint8_t subZone) |
| Move shutter up. More... | |
| BOOL | vscp_control_sendMoveShutterDownEvent (uint8_t index, uint8_t zone, uint8_t subZone) |
| Move shutter down. More... | |
| BOOL | vscp_control_sendMoveShutterLeftEvent (uint8_t index, uint8_t zone, uint8_t subZone) |
| Move shutter left. More... | |
| BOOL | vscp_control_sendMoveShutterRightEvent (uint8_t index, uint8_t zone, uint8_t subZone) |
| Move shutter right. More... | |
| BOOL | vscp_control_sendMoveShutterMiddlePosEvent (uint8_t index, uint8_t zone, uint8_t subZone) |
| Move shutter to middle position. More... | |
| BOOL | vscp_control_sendLampOnEvent (uint8_t zone, uint8_t subZone) |
| Turn on (all) lamps in zone/sub-zone. More... | |
Level 1 control events abstraction.
| BOOL vscp_control_sendActivateEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Activate all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendBigChangeLevelEvent | ( | uint8_t | index, |
| uint8_t | zone, | ||
| uint8_t | subZone, | ||
| int8_t const *const | level, | ||
| uint8_t | levelSize | ||
| ) |
Big Change level can be used in situations when the one byte level of CLASS1.CONTROL, Type=22 is not enough.
| [in] | index | Index |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| [in] | level | Level as signed Integer. The range can be adjusted by the user by sending the needed number of bytes 1-5. |
| [in] | levelSize | Size in bytes (1-5) |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendChangeChannelEvent | ( | uint8_t | value, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
This is typical for changing TV channels or for changing AV amp input source etc.
| [in] | value | A value between 0 and 127 indicates the channel number. A value between 128 to 157 is change down by the specified number of channels. A value between 160 to 191 is change up by the specified number of channels. A value of 255 means that this is an extended change channel event and that the channel number is sent in byte 3 and after if needed. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendChangeLevelEvent | ( | uint8_t | level, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Change an absolute level.
| [in] | level | Absolute level. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendCloseEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Perform close on all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendDeactivateEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Deactivate all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendDimLampEvent | ( | uint8_t | value, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Dim all dimmer devices on a segment to a specified dim value.
| [in] | value | Value (0 – 100) . 0 = off, 100 = full on. 254 dim down one step. 255 dim up one step. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendInterruptEvent | ( | uint8_t | level, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Perform Interrupt on all nodes in zone.
| [in] | level | Interrupt level. (0 – 255 , zero is lowest interrupt level. ). |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendLampOnEvent | ( | uint8_t | zone, |
| uint8_t | subZone | ||
| ) |
Turn on (all) lamps in zone/sub-zone.
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendLampOnOffEvent | ( | uint8_t | on, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Turn on/off lamps on nodes in zone.
| [in] | on | If equal to zero off else on. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendMeasurementRequestEvent | ( | uint8_t | index, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
| [in] | index | Zero indicates all measurements supported by node should be sent (as separate events). Non-zero indicates a node specific index specifying which measurement to send. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendMoveShutterDownEvent | ( | uint8_t | index, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Move shutter down.
| [in] | index | Index |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendMoveShutterLeftEvent | ( | uint8_t | index, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Move shutter left.
| [in] | index | Index |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendMoveShutterMiddlePosEvent | ( | uint8_t | index, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Move shutter to middle position.
| [in] | index | Index |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendMoveShutterRightEvent | ( | uint8_t | index, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Move shutter right.
| [in] | index | Index |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendMoveShutterUpEvent | ( | uint8_t | index, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Move shutter up.
| [in] | index | Index |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendMuteOnOffEvent | ( | uint8_t | mute, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Mute/Un-mute all sound generating nodes in a zone.
| [in] | mute | If equal to zero no mute else mute. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendOpenEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Perform open on all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendPauseEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Pause all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendRelativeChangeLevelEvent | ( | uint8_t | level, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
| [in] | level | Relative level. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendResetEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Perform Reset on all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendResumeEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Resume all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendSetCountryLanguageEvent | ( | uint8_t | countryCode, |
| uint8_t | customCodedSystem, | ||
| uint8_t | zone, | ||
| uint8_t | subZone, | ||
| uint8_t const *const | countryCodeSpecific, | ||
| uint8_t | countryCodeSpecificSize | ||
| ) |
Set country language.
| [in] | countryCode | Country/Language code. |
| [in] | customCodedSystem | Custom coded system |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| [in] | countryCodeSpecific | Country/Language code specific |
| [in] | countryCodeSpecificSize | Size in bytes (1-5) |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendSetPresetEvent | ( | uint8_t | code, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Some nodes may have pre-set configurations to choose from.
With this event a pre-set can be set for a zone/sub-zone.
A node that receive and act on this event send CLASS1.INFORMATION,
Type=48 as a response event.
| [in] | code | Code for pre-set to set. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendSleepEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Perform Sleep on all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendStartEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Start all nodes in a zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendStopEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Stop all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendStreamDataEvent | ( | uint8_t | sequenceNumber, |
| uint8_t const *const | data, | ||
| uint8_t | dataSize | ||
| ) |
| [in] | sequenceNumber | Sequence number which is increase by one for each stream data event sent. |
| [in] | data | Stream data. |
| [in] | dataSize | Size in bytes (1-7) |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendStreamDataWithZoneEvent | ( | uint8_t | sequenceNumber, |
| uint8_t | zone, | ||
| uint8_t | subZone, | ||
| uint8_t const *const | data, | ||
| uint8_t | dataSize | ||
| ) |
| [in] | sequenceNumber | Sequence number which is increase by one for each stream data event sent. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| [in] | data | Stream data. |
| [in] | dataSize | Size in bytes (1-5) |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendSynchronizeEvent | ( | uint8_t | index, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Synchronize events on a segment.
| [in] | index | Index for subunits within modules. 255 is all subunits. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendTimedPulseOffEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone, | ||
| uint8_t | control, | ||
| uint8_t const *const | time, | ||
| uint8_t | timeSize | ||
| ) |
With this event it is possible to generate a timed pulse that is off for a specified time.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| [in] | control | Control byte. |
| [in] | time | Set time as a long with MSB in the first byte. |
| [in] | timeSize | Size in bytes (1-4) |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendTimedPulseOnEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone, | ||
| uint8_t | d, | ||
| uint8_t const *const | e, | ||
| uint8_t | eSize | ||
| ) |
With this event it is possible to generate a timed pulse that is on for a specified time.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| [in] | d | Control byte. |
| [in] | e | Set time as a long with MSB in the first byte. |
| [in] | eSize | Size in bytes (1-4) |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendToggleStateEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Toggle the state of a node.
Note: This may be a bad design option as it often demands that the state should be known for the node on beforehand.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendTurnOffEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Turn Off a nodes in a zone/subzone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendTurnOnEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Turn On a nodes in a zone/subzone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendUndefinedEvent | ( | void | ) |
General control.
| FALSE | Failed to send the event |
| TRUE | Event successul sent |
| BOOL vscp_control_sendWakeupEvent | ( | uint8_t | userData, |
| uint8_t | zone, | ||
| uint8_t | subZone | ||
| ) |
Wakeup all nodes in zone.
| [in] | userData | Optional byte that have a meaning given by the issuer of the event. |
| [in] | zone | Zone for which event applies to (0-255). 255 is all zones. |
| [in] | subZone | Sub-zone for which event applies to (0-255). 255 is all sub-zones. |
| FALSE | Failed to send the event |
| TRUE | Event successul sent |


{{shipment.from_location.name}} to {{shipment.to_location.name}}
Shipment Id: {{shipment.name}}
Shipment System Id: {{shipment.id}}
Total value: {{shipment.price | number:2}}
Number of Items: {{total_count}}
Created by: {{shipment.user.username}}
| Item |
Item Category |
Quantity |
Expiration |
Lot Num |
Unit Price |
Total Price |
| {{stockchange.itemlot.item.name}} |
{{stockchange.itemlot.item.category.name}} |
{{stockchange.qty}} |
{{stockchange.itemlot.expiration | date:'MM/yyyy' }} |
{{stockchange.itemlot.lot_num}} |
{{stockchange.itemlot.unit_price | number:2}} |
{{stockchange.qty * stockchange.itemlot.unit_price | number:2}} |


Hey Alyssa,
I don't really have anything to say to you here because yaknow, we talk a lot cuz yaknow, we like each other, cuz yaknow how could we not, cuz yaknow we are both cute, cuz yaknow we are the cutest couple ever, cuz yaknow
I just want to say that you have made my high school life great
You were always there to sit right next to me when I didn't feel so great and cheer me up
You were always there to play fire emblem with me and talk about how you have insane luck cuz you do
You were always there to eat my food and basically keep me thin and fit
You are always here to talk to me and be so cute that I melt
You are always here so that I feel loved and appreciated
I really like you and i'm glad that you came into my life
You inspired me to do a lot of things and I just want you to know that I appreciate everything you have done for me
Good luck to the both of us on our relationship and I will see you soon
I Love You


Live ChatRoom
Home
Go To Conversations
Admin
Data Models
Topic List
Topic1
Topic2
Topic3
Topic: 50th Super Bowl
Participants
Zach Lamb
Talking History:
Peyton Manning is so lucky!
Broncos has the strongest defensive group!
Steve Zhang


QTemporaryDir Class
The QTemporaryDir class creates a unique directory for temporary use. More...
| Header: | #include <QTemporaryDir> |
| qmake: | QT += core |
Note: All functions in this class are reentrant.
Public Functions
| QTemporaryDir() | |
| QTemporaryDir(const QString &templatePath) | |
| ~QTemporaryDir() | |
| bool | autoRemove() const |
| QString | errorString() const |
| QString | filePath(const QString &fileName) const |
| bool | isValid() const |
| QString | path() const |
| bool | remove() |
| void | setAutoRemove(bool b) |
Detailed Description
The QTemporaryDir class creates a unique directory for temporary use.
QTemporaryDir is used to create unique temporary directories safely. The directory itself is created by the constructor. The name of the temporary directory is guaranteed to be unique (i.e., you are guaranteed to not overwrite an existing directory), and the directory will subsequently be removed upon destruction of the QTemporaryDir object. The directory name is either auto-generated, or created based on a template, which is passed to QTemporaryDir's constructor.
Example:
// Within a function/method... QTemporaryDir dir; if (dir.isValid()) { // dir.path() returns the unique directory path } // The QTemporaryDir destructor removes the temporary directory // as it goes out of scope.
It is very important to test that the temporary directory could be created, using isValid(). Do not use exists(), since a default-constructed QDir represents the current directory, which exists.
The path to the temporary directory can be found by calling path().
A temporary directory will have some static part of the name and some part that is calculated to be unique. The default path will be determined from QCoreApplication::applicationName() (otherwise qt_temp
) and will be placed into the temporary path as returned by QDir::tempPath(). If you specify your own path, a relative path will not be placed in the temporary directory by default, but be relative to the current working directory. In all cases, a random string will be appended to the path in order to make it unique.
See also QDir::tempPath(), QDir, and QTemporaryFile.
Member Function Documentation
QTemporaryDir::QTemporaryDir()
Constructs a QTemporaryDir using as template the application name returned by QCoreApplication::applicationName() (otherwise qt_temp
). The directory is stored in the system's temporary directory, QDir::tempPath().
See also QDir::tempPath().
QTemporaryDir::QTemporaryDir(const QString &templatePath)
Constructs a QTemporaryDir with a template of templatePath.
If templatePath is a relative path, the path will be relative to the current working directory. You can use QDir::tempPath() to construct templatePath if you want use the system's temporary directory.
If the templatePath ends with XXXXXX it will be used as the dynamic portion of the directory name, otherwise it will be appended. Unlike QTemporaryFile, XXXXXX in the middle of the template string is not supported.
See also QDir::tempPath().
QTemporaryDir::~QTemporaryDir()
Destroys the temporary directory object. If auto remove mode was set, it will automatically delete the directory including all its contents.
See also autoRemove().
bool QTemporaryDir::autoRemove() const
Returns true
if the QTemporaryDir is in auto remove mode. Auto-remove mode will automatically delete the directory from disk upon destruction. This makes it very easy to create your QTemporaryDir object on the stack, fill it with files, do something with the files, and finally on function return it will automatically clean up after itself.
Auto-remove is on by default.
See also setAutoRemove() and remove().
QString QTemporaryDir::errorString() const
If isValid() returns false
, this function returns the error string that explains why the creation of the temporary directory failed. Otherwise, this function return an empty string.
This function was introduced in Qt 5.6.
QString QTemporaryDir::filePath(const QString &fileName) const
Returns the path name of a file in the temporary directory. Does not check if the file actually exists in the directory. Redundant multiple separators or "." and ".." directories in fileName are not removed (see QDir::cleanPath()). Absolute paths are not allowed.
This function was introduced in Qt 5.9.
bool QTemporaryDir::isValid() const
Returns true
if the QTemporaryDir was created successfully.
QString QTemporaryDir::path() const
Returns the path to the temporary directory. Empty if the QTemporaryDir could not be created.
bool QTemporaryDir::remove()
Removes the temporary directory, including all its contents.
Returns true
if removing was successful.
void QTemporaryDir::setAutoRemove(bool b)
Sets the QTemporaryDir into auto-remove mode if b is true.
Auto-remove is on by default.
See also autoRemove() and remove().


Page not found :(
The requested page could not be found.
Cookies help us to provide, protect and improve this website services. By continuing to use our site, you agree to our cookie rules.


Actions on Google
Actions on google let you extend the functionality of the Google Assistant with Actions. Actions let users get things done through a conversational interface that can range from a quick command to turn on some lights or a longer conversation, such as playing a trivia game.
The following Google Actions are developed by me -
- Quiz Bird - Trivia on Birds Related Facts
- ML Vibes - Game on Machine Learning Concepts
- Artificial Intelligence Vibes - Game on Artificial Intelligence Concepts
- Interview with C - Game on C Prgramming Language
- Semiconductor Quiz - Game on Semiconductor Quiz Questions
- Java Vibes - Trivia Game on Java Prgramming Language
- Animal's Baby Name - Flash Card Game on Animal's Baby Name
- Notable Quiz - Personality Based Question Game


The following definitions are used throughout this documentation. They are consistent with the terminology used in the TIFF 6.0 specification.
In order to better understand how TIFF works (and consequently this software) it is important to recognize the distinction between the physical organization of image data as it is stored in a TIFF and how the data is interpreted and manipulated as pixels in an image. TIFF supports a wide variety of storage and data compression schemes that can be used to optimize retrieval time and/or minimize storage space. These on-disk formats are independent of the image characteristics; it is the responsibility of the TIFF reader to process the on-disk storage into an in-memory format suitable for an application. Furthermore, it is the responsibility of the application to properly interpret the visual characteristics of the image data. TIFF defines a framework for specifying the on-disk storage format and image characteristics with few restrictions. This permits significant complexity that can be daunting. Good applications that handle TIFF work by handling as wide a range of storage formats as possible, while constraining the acceptable image characteristics to those that make sense for the application.


MovieTicketzzz.com
Name for Ticket:
Movies:
Select Movie
Star Wars
Pulp Fiction
Citizen Kane
Times:
Select Times
Age:
Select Age
Child (0-14)
Adult (15-64)
Senior (65 and Up)
Submit
Reserved Tickets:
Movie Name:
Movie Time:
Movie Price:


Every big computing disaster has come from taking too many ideas and putting them in one place. --Gordon Bell[source]


find_package¶
Contents
Find an external project, and load its settings.
Basic Signature and Module Mode¶
find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE]
[REQUIRED] [[COMPONENTS] [components...]]
[OPTIONAL_COMPONENTS components...]
[NO_POLICY_SCOPE])
Finds and loads settings from an external project. <PackageName>_FOUND
will be set to indicate whether the package was found. When the
package is found package-specific information is provided through
variables and Imported Targets documented by the package itself. The
QUIET
option disables informational messages, including those indicating
that the package cannot be found if it is not REQUIRED
. The REQUIRED
option stops processing with an error message if the package cannot be found.
A package-specific list of required components may be listed after the
COMPONENTS
option (or after the REQUIRED
option if present).
Additional optional components may be listed after
OPTIONAL_COMPONENTS
. Available components and their influence on
whether a package is considered to be found are defined by the target
package.
The [version]
argument requests a version with which the package found
should be compatible (format is major[.minor[.patch[.tweak]]]
). The
EXACT
option requests that the version be matched exactly. If no
[version]
and/or component list is given to a recursive invocation
inside a find-module, the corresponding arguments are forwarded
automatically from the outer call (including the EXACT
flag for
[version]
). Version support is currently provided only on a
package-by-package basis (see the Version Selection section below).
See the cmake_policy()
command documentation for discussion
of the NO_POLICY_SCOPE
option.
The command has two modes by which it searches for packages: “Module”
mode and “Config” mode. The above signature selects Module mode.
If no module is found the command falls back to Config mode, described
below. This fall back is disabled if the MODULE
option is given.
In Module mode, CMake searches for a file called Find<PackageName>.cmake
.
The file is first searched in the CMAKE_MODULE_PATH
,
then among the Find Modules provided by the CMake installation.
If the file is found, it is read and processed by CMake. It is responsible
for finding the package, checking the version, and producing any needed
messages. Some find-modules provide limited or no support for versioning;
check the module documentation.
If the MODULE
option is not specfied in the above signature,
CMake first searches for the package using Module mode. Then, if the
package is not found, it searches again using Config mode. A user
may set the variable CMAKE_FIND_PACKAGE_PREFER_CONFIG
to
TRUE
to direct CMake first search using Config mode before falling
back to Module mode.
Full Signature and Config Mode¶
User code should generally look for packages using the above basic signature. The remainder of this command documentation specifies the full command signature and details of the search process. Project maintainers wishing to provide a package to be found by this command are encouraged to read on.
The complete Config mode command signature is
find_package(<PackageName> [version] [EXACT] [QUIET]
[REQUIRED] [[COMPONENTS] [components...]]
[CONFIG|NO_MODULE]
[NO_POLICY_SCOPE]
[NAMES name1 [name2 ...]]
[CONFIGS config1 [config2 ...]]
[HINTS path1 [path2 ... ]]
[PATHS path1 [path2 ... ]]
[PATH_SUFFIXES suffix1 [suffix2 ...]]
[NO_DEFAULT_PATH]
[NO_PACKAGE_ROOT_PATH]
[NO_CMAKE_PATH]
[NO_CMAKE_ENVIRONMENT_PATH]
[NO_SYSTEM_ENVIRONMENT_PATH]
[NO_CMAKE_PACKAGE_REGISTRY]
[NO_CMAKE_BUILDS_PATH] # Deprecated; does nothing.
[NO_CMAKE_SYSTEM_PATH]
[NO_CMAKE_SYSTEM_PACKAGE_REGISTRY]
[CMAKE_FIND_ROOT_PATH_BOTH |
ONLY_CMAKE_FIND_ROOT_PATH |
NO_CMAKE_FIND_ROOT_PATH])
The CONFIG
option, the synonymous NO_MODULE
option, or the use
of options not specified in the basic signature all enforce pure Config
mode. In pure Config mode, the command skips Module mode search and
proceeds at once with Config mode search.
Config mode search attempts to locate a configuration file provided by the
package to be found. A cache entry called <PackageName>_DIR
is created to
hold the directory containing the file. By default the command
searches for a package with the name <PackageName>
. If the NAMES
option
is given the names following it are used instead of <PackageName>
.
The command searches for a file called <PackageName>Config.cmake
or
<lower-case-package-name>-config.cmake
for each name specified.
A replacement set of possible configuration file names may be given
using the CONFIGS
option. The search procedure is specified below.
Once found, the configuration file is read and processed by CMake.
Since the file is provided by the package it already knows the
location of package contents. The full path to the configuration file
is stored in the cmake variable <PackageName>_CONFIG
.
All configuration files which have been considered by CMake while
searching for an installation of the package with an appropriate
version are stored in the cmake variable <PackageName>_CONSIDERED_CONFIGS
,
the associated versions in <PackageName>_CONSIDERED_VERSIONS
.
If the package configuration file cannot be found CMake will generate
an error describing the problem unless the QUIET
argument is
specified. If REQUIRED
is specified and the package is not found a
fatal error is generated and the configure step stops executing. If
<PackageName>_DIR
has been set to a directory not containing a
configuration file CMake will ignore it and search from scratch.
Package maintainers providing CMake package configuration files are encouraged to name and install them such that the Search Procedure outlined below will find them without requiring use of additional options.
Version Selection¶
When the [version]
argument is given Config mode will only find a
version of the package that claims compatibility with the requested
version (format is major[.minor[.patch[.tweak]]]
). If the EXACT
option is given only a version of the package claiming an exact match
of the requested version may be found. CMake does not establish any
convention for the meaning of version numbers. Package version
numbers are checked by “version” files provided by the packages
themselves. For a candidate package configuration file
<config-file>.cmake
the corresponding version file is located next
to it and named either <config-file>-version.cmake
or
<config-file>Version.cmake
. If no such version file is available
then the configuration file is assumed to not be compatible with any
requested version. A basic version file containing generic version
matching code can be created using the
CMakePackageConfigHelpers
module. When a version file
is found it is loaded to check the requested version number. The
version file is loaded in a nested scope in which the following
variables have been defined:
PACKAGE_FIND_NAME
- the
<PackageName>
PACKAGE_FIND_VERSION
- full requested version string
PACKAGE_FIND_VERSION_MAJOR
- major version if requested, else 0
PACKAGE_FIND_VERSION_MINOR
- minor version if requested, else 0
PACKAGE_FIND_VERSION_PATCH
- patch version if requested, else 0
PACKAGE_FIND_VERSION_TWEAK
- tweak version if requested, else 0
PACKAGE_FIND_VERSION_COUNT
- number of version components, 0 to 4
The version file checks whether it satisfies the requested version and sets these variables:
PACKAGE_VERSION
- full provided version string
PACKAGE_VERSION_EXACT
- true if version is exact match
PACKAGE_VERSION_COMPATIBLE
- true if version is compatible
PACKAGE_VERSION_UNSUITABLE
- true if unsuitable as any version
These variables are checked by the find_package
command to determine
whether the configuration file provides an acceptable version. They
are not available after the find_package
call returns. If the version
is acceptable the following variables are set:
<PackageName>_VERSION
- full provided version string
<PackageName>_VERSION_MAJOR
- major version if provided, else 0
<PackageName>_VERSION_MINOR
- minor version if provided, else 0
<PackageName>_VERSION_PATCH
- patch version if provided, else 0
<PackageName>_VERSION_TWEAK
- tweak version if provided, else 0
<PackageName>_VERSION_COUNT
- number of version components, 0 to 4
and the corresponding package configuration file is loaded.
When multiple package configuration files are available whose version files
claim compatibility with the version requested it is unspecified which
one is chosen: unless the variable CMAKE_FIND_PACKAGE_SORT_ORDER
is set no attempt is made to choose a highest or closest version number.
To control the order in which find_package
checks for compatibility use
the two variables CMAKE_FIND_PACKAGE_SORT_ORDER
and
CMAKE_FIND_PACKAGE_SORT_DIRECTION
.
For instance in order to select the highest version one can set
SET(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
SET(CMAKE_FIND_PACKAGE_SORT_DIRECTION DEC)
before calling find_package
.
Search Procedure¶
CMake constructs a set of possible installation prefixes for the
package. Under each prefix several directories are searched for a
configuration file. The tables below show the directories searched.
Each entry is meant for installation trees following Windows (W
), UNIX
(U
), or Apple (A
) conventions:
<prefix>/ (W)
<prefix>/(cmake|CMake)/ (W)
<prefix>/<name>*/ (W)
<prefix>/<name>*/(cmake|CMake)/ (W)
<prefix>/(lib/<arch>|lib*|share)/cmake/<name>*/ (U)
<prefix>/(lib/<arch>|lib*|share)/<name>*/ (U)
<prefix>/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/ (U)
<prefix>/<name>*/(lib/<arch>|lib*|share)/cmake/<name>*/ (W/U)
<prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/ (W/U)
<prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/ (W/U)
On systems supporting macOS FRAMEWORK
and BUNDLE
, the
following directories are searched for Frameworks or Application Bundles
containing a configuration file:
<prefix>/<name>.framework/Resources/ (A)
<prefix>/<name>.framework/Resources/CMake/ (A)
<prefix>/<name>.framework/Versions/*/Resources/ (A)
<prefix>/<name>.framework/Versions/*/Resources/CMake/ (A)
<prefix>/<name>.app/Contents/Resources/ (A)
<prefix>/<name>.app/Contents/Resources/CMake/ (A)
In all cases the <name>
is treated as case-insensitive and corresponds
to any of the names specified (<PackageName>
or names given by NAMES
).
Paths with lib/<arch>
are enabled if the
CMAKE_LIBRARY_ARCHITECTURE
variable is set. lib*
includes one
or more of the values lib64
, lib32
, libx32
or lib
(searched in
that order).
- Paths with
lib64
are searched on 64 bit platforms if theFIND_LIBRARY_USE_LIB64_PATHS
property is set toTRUE
. - Paths with
lib32
are searched on 32 bit platforms if theFIND_LIBRARY_USE_LIB32_PATHS
property is set toTRUE
. - Paths with
libx32
are searched on platforms using the x32 ABI if theFIND_LIBRARY_USE_LIBX32_PATHS
property is set toTRUE
. - The
lib
path is always searched.
If PATH_SUFFIXES
is specified, the suffixes are appended to each
(W
) or (U
) directory entry one-by-one.
This set of directories is intended to work in cooperation with
projects that provide configuration files in their installation trees.
Directories above marked with (W
) are intended for installations on
Windows where the prefix may point at the top of an application’s
installation directory. Those marked with (U
) are intended for
installations on UNIX platforms where the prefix is shared by multiple
packages. This is merely a convention, so all (W
) and (U
) directories
are still searched on all platforms. Directories marked with (A
) are
intended for installations on Apple platforms. The
CMAKE_FIND_FRAMEWORK
and CMAKE_FIND_APPBUNDLE
variables determine the order of preference.
The set of installation prefixes is constructed using the following
steps. If NO_DEFAULT_PATH
is specified all NO_*
options are
enabled.
Search paths specified in the
<PackageName>_ROOT
CMake variable and the<PackageName>_ROOT
environment variable, where<PackageName>
is the package to be found. The package root variables are maintained as a stack so if called from within a find module, root paths from the parent’s find module will also be searched after paths for the current package. This can be skipped ifNO_PACKAGE_ROOT_PATH
is passed. See policyCMP0074
.Search paths specified in cmake-specific cache variables. These are intended to be used on the command line with a
-DVAR=value
. The values are interpreted as semicolon-separated lists. This can be skipped ifNO_CMAKE_PATH
is passed:CMAKE_PREFIX_PATH CMAKE_FRAMEWORK_PATH CMAKE_APPBUNDLE_PATH
Search paths specified in cmake-specific environment variables. These are intended to be set in the user’s shell configuration, and therefore use the host’s native path separator (
;
on Windows and:
on UNIX). This can be skipped ifNO_CMAKE_ENVIRONMENT_PATH
is passed:<PackageName>_DIR CMAKE_PREFIX_PATH CMAKE_FRAMEWORK_PATH CMAKE_APPBUNDLE_PATH
Search paths specified by the
HINTS
option. These should be paths computed by system introspection, such as a hint provided by the location of another item already found. Hard-coded guesses should be specified with thePATHS
option.Search the standard system environment variables. This can be skipped if
NO_SYSTEM_ENVIRONMENT_PATH
is passed. Path entries ending in/bin
or/sbin
are automatically converted to their parent directories:PATH
Search paths stored in the CMake User Package Registry. This can be skipped if
NO_CMAKE_PACKAGE_REGISTRY
is passed or by setting theCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
toTRUE
. See thecmake-packages(7)
manual for details on the user package registry.Search cmake variables defined in the Platform files for the current system. This can be skipped if
NO_CMAKE_SYSTEM_PATH
is passed:CMAKE_SYSTEM_PREFIX_PATH CMAKE_SYSTEM_FRAMEWORK_PATH CMAKE_SYSTEM_APPBUNDLE_PATH
Search paths stored in the CMake System Package Registry. This can be skipped if
NO_CMAKE_SYSTEM_PACKAGE_REGISTRY
is passed or by setting theCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
toTRUE
. See thecmake-packages(7)
manual for details on the system package registry.Search paths specified by the
PATHS
option. These are typically hard-coded guesses.
The CMake variable CMAKE_FIND_ROOT_PATH
specifies one or more
directories to be prepended to all other search directories. This
effectively “re-roots” the entire search under given locations.
Paths which are descendants of the CMAKE_STAGING_PREFIX
are excluded
from this re-rooting, because that variable is always a path on the host system.
By default the CMAKE_FIND_ROOT_PATH
is empty.
The CMAKE_SYSROOT
variable can also be used to specify exactly one
directory to use as a prefix. Setting CMAKE_SYSROOT
also has other
effects. See the documentation for that variable for more.
These variables are especially useful when cross-compiling to
point to the root directory of the target environment and CMake will
search there too. By default at first the directories listed in
CMAKE_FIND_ROOT_PATH
are searched, then the CMAKE_SYSROOT
directory is searched, and then the non-rooted directories will be
searched. The default behavior can be adjusted by setting
CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
. This behavior can be manually
overridden on a per-call basis using options:
CMAKE_FIND_ROOT_PATH_BOTH
- Search in the order described above.
NO_CMAKE_FIND_ROOT_PATH
- Do not use the
CMAKE_FIND_ROOT_PATH
variable. ONLY_CMAKE_FIND_ROOT_PATH
- Search only the re-rooted directories and directories below
CMAKE_STAGING_PREFIX
.
The default search order is designed to be most-specific to
least-specific for common use cases.
Projects may override the order by simply calling the command
multiple times and using the NO_*
options:
find_package (<PackageName> PATHS paths... NO_DEFAULT_PATH) find_package (<PackageName>)
Once one of the calls succeeds the result variable will be set and stored in the cache so that no call will search again.
By default the value stored in the result variable will be the path at
which the file is found. The CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS
variable may be set to TRUE
before calling find_package
in order
to resolve symbolic links and store the real path to the file.
Every non-REQUIRED find_package
call can be disabled by setting the
CMAKE_DISABLE_FIND_PACKAGE_<PackageName>
variable to TRUE
.
Package File Interface Variables¶
When loading a find module or package configuration file find_package
defines variables to provide information about the call arguments (and
restores their original state before returning):
CMAKE_FIND_PACKAGE_NAME
- the
<PackageName>
which is searched for <PackageName>_FIND_REQUIRED
- true if
REQUIRED
option was given <PackageName>_FIND_QUIETLY
- true if
QUIET
option was given <PackageName>_FIND_VERSION
- full requested version string
<PackageName>_FIND_VERSION_MAJOR
- major version if requested, else 0
<PackageName>_FIND_VERSION_MINOR
- minor version if requested, else 0
<PackageName>_FIND_VERSION_PATCH
- patch version if requested, else 0
<PackageName>_FIND_VERSION_TWEAK
- tweak version if requested, else 0
<PackageName>_FIND_VERSION_COUNT
- number of version components, 0 to 4
<PackageName>_FIND_VERSION_EXACT
- true if
EXACT
option was given <PackageName>_FIND_COMPONENTS
- list of requested components
<PackageName>_FIND_REQUIRED_<c>
- true if component
<c>
is required, false if component<c>
is optional
In Module mode the loaded find module is responsible to honor the
request detailed by these variables; see the find module for details.
In Config mode find_package
handles REQUIRED
, QUIET
, and
[version]
options automatically but leaves it to the package
configuration file to handle components in a way that makes sense
for the package. The package configuration file may set
<PackageName>_FOUND
to false to tell find_package
that component
requirements are not satisfied.


--- layout: post cover: 'assets/images/cover14.jpg' title: Enterprise Application Architecture date: 2016-01-17 10:31:00 tags: services subclass: 'post tag-services tag-content' categories: 'dlwhitehurst' navigation: True logo: 'assets/images/blog-logo.png' ---
Enterprise architecture as we know it is changing quickly. Technology is moving so fast that's it's almost impossible to keep up with it. While our new competitors may be hosting their applications on virtual servers in the cloud, we may have made huge investments in our own infrastructure. We don't believe the infrastructure is as important as the instructions that run that infrastructure. This software, these configurations, and specific instructions make up the operating-side of the enterprise architecture as a whole. While your focus should be a continual assessment of the ROI as it relates to your current enterprise architecture, don't ignore the possibility for change. A small investment today may cause a continued improvement in profit tomorrow.
Speak to patterns and frameworks ...J2EE, TOGAF, ITIL


Ammu-Nation. The store that beat Communism, and then guaranteed your God-Given right to bear
grenade launchers,flamethrowers, and everything in between!  We are here
to provide you with anything and everything you need to frag, flame, disembowel, or otherwise obliterate
any problem you may encounter in life's travels, without any pesky paperwork. You got a problem, we got a piece for it.
Guaranteed.


Setting: Home, with girlfriend. Southern California, December 2003.
2:20 pm 40 mg IAP ingested, dissolved in vodka.
After drinking our shot & a half of vodka, my partner & I sat down to smoke a couple of bowls of good cannabis. We expected a slow come-up, from reading others' reports, and decided to take a bicycle ride to take our minds off waiting.
By approximately 3:15, I was feeling the first alert, which came on as a strange increase in pressure in my head, with colors becoming more pronounced.
Upon riding our bicycles further, the strange nature of the compound began to be felt. Though the compound is definitely 'speedy,' there is a strange relaxed feeling one gets, it seems as though time is slowed slightly, and one is moving in slow motion. A very nice mood came over both me and my companion, and we continued riding in spite of feeling a bit cold (it was a windy, overcast day).
We both felt a slight oddness in our stomachs, but ignored it by smoking a small amount more of cannabis, about 1.5 hours after coming up. My girlfriend enjoyed the 2 substances together, but I found myself uninterested in smoking (which is *strange* for this pothead!), and declined to smoke more than a single toke.
We headed home after about 2 hours out and about, and got back home around 5:00. I was chilled to the bone, moreso than I would have been under normal circumstances, and felt the need to curl up in front of a heater with a blanket wrapped around me. My girlfriend did not feel the intense chill that I did, and I remembered that I also get similar chills when eating magic mushrooms, while my girlfriend does not.
The peak of the experience lasted about three hours, and consisted of a pronounced amphetamine push, we both felt lots of energy pent up inside, however, I had no problem simply sitting still in front of the heater, soaking up the warmth. In fact, after about 4.5 - 5 hours, I began to feel intensely relaxed, even yawning several times. My partner felt the need to keep busy, playing a video game, looking thru a newspaper advertisement, practicing with a typing program, smoking cannabis, making conversation, basically whatever was around as a distraction. At this point (4 - 5 hours in), we started to have stomach distress, with slight nausea, and unavoidable gas.
About 6 hours after coming up, we were still very much feeling the IAP, and decided to venture outside again, this time skateboarding to a headshop to pick up some Whip-Its.
My girlfriend tried the nitrous as soon as we got back home, and quite enjoyed it. The laughing gas lived up to its nick-name, and my girlfriend had fun doing balloons while watching COPS on TV, she said she found the situations hilarious.
Shortly after a few balloons were consumed, fast food was obtained, and while my appetite was considerably diminished, I did my best to eat something.
About 8 hours after coming up, we were still feeling the IAP, but in an annoying way, we both felt a number had been done on our GI tracts, and had diarrhea that night and the next day. I also developed a minor headache, which felt vascular-related, as it throbbed in time with my pulse. I began to find it easy to close my eyes and 'zone out' around this time, and did so as much as possible.
Around midnight, 10 hours after dosing, we both drifted off to a fitful sleep. Neither of us could seem to stay asleep more than an hour or so, and the next morning we felt like we could *still* feel the last 10% of the effects.
We both agree that the experience was agreeable as far as research chemicals go, but can't be used as a substitute for MDMA, and is not something worth repeating.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Below the hood, the user hunting functions in PowerView are relatively straight forward and worth a read.
For Invoke-UserHunter, the script will first query the members of the target group (“Domain Admins” by default).
Next, the script will query the domain for all machines using Get-NetComputers.
Finally, the script will perform a Get-NetSessions and Get-NetLoggedOn against every host in the list and look for the users previously queried.
While this technique provides the most coverage, it has the possibility of being slow and noisy-ish depending on the network (though we rarely get caught with it).
*If you want the raw dump of where all of the users are logged in, you can add a -ShowAll flag to the user hunter scripts. I prefer this so we do not have to query multiple times!


What is git?
- A version control system.
- Save code in a repository.
- Can see history of changes - commits.
- Can collaborate with other people.
What is Github?
- A website that lets you store git repositories in the cloud.
- Collaboration tools, issue tracking, wiki - good for teams
- Can also host static websites.
- If you like another person's repository, allows you to fork.
How to use git/Github
- Terminal
- Github client for your operating system
How does it all work in theory?
Picture time!


In this chapter, we will explore how these APIs can be used to build simple to complex test steps.
This chapter will also help in overcoming some common issues while building tests with Selenium WebDriver.
The chapter examples are created with Selenium WebDriver Java bindings.


Cascade framework provides the following normalised default behavior for the section, main, article, header, footer, aside and nav elements, to make it easier for these elements to use them for defining your grid :
Herebelow is an example of a common website layout, illustrating the use of these elements.
The generic "cell" class further provides a default padding that can be used as a child for your grid cells to provide a default responsive gutter across your page.
You can easily define your grid by adding your own custom styling rules as shown in the example below.
If you need to support IE<9, you will need to add a shiv to allow the section, article, header, footer, aside and nav elements to be styled.
Cascade Framework comes packed with a file called iehtmlshiv.js that is used for this example and combines the following shivs :
The latter shiv further enhances your old IE by adding missing Ecmascript5 features and is a dependency used by the console shiv also included in the
framework, which offers console support to these same browsers.
It is recommended to use conditional comments in your HTML head tag for adding these polyfills to avoid them being loaded in modern browsers while providing an optimal user experience in old IE.
The "site-header" and "site-footer" classes provide additional styles for your site's header and footer.


The selection functionality allows implementing UI interaction for selecting elements from the arbitrary set of items. Also, with the help of the selection model it is easy to implement accordions, grouped lists, display of master-details, inline data editing and so on.
To work with selection functionality you should import the
RTSelectionModule
module from right-angled
library and add it into your
AppModule
imports
array. You can also use RTModule
module which includes the functionality of the entire library.
First of all, we mark an HTML element which represents the selection area by the
rtSelectionArea
directive.
Second, we mark the elements placed inside such area by the
rtSelectable
directive. This makes these elements selectable. That is all we need to do to get selection functionality. Now, the following
commands are available:
Ctrl
key selects clicked element and keeping the previous selections.Shift
key selects the range of the elements from the last one selected to the clicked one.↑
key moves selection to the previous element.↓
key moves selection to the next element.Shift + ↑
combination adds previous element to the collection of the selected elements.Shift + ↓
combination adds next element to the collection of the selected elements.Ctrl + ↑
combination selects the first element in the list.Ctrl + ↓
combination selects the last element in the list.Ctrl + A
combination selects all elements in the list.Tab
and Shift + Tab
moves you up and down the list.
Also
rtSelectable
directive adds rt-selected
class to the marked element when it selected. With the help of this class you can set
up the styles pointing out that the element is selected or not.
rtSelectionArea
configuration options
rtSelectionArea
directive contains several toggle switches, which can be used to configure selection behavior. Below you can see the
description of this options and the example demonstrating their work.
horizontal (default value is false)
- if you switch on this option, the keyboard handler starts handling the right
and
left
arrow keys instead of the up
and down
arrow keys.
toggleOnly (default value is false)
- if you switch on this option, the element selection can be cleared only after second click on it.
This behavior can be useful for touch devices. Obviously, this option makes sense only when the multiple
option is switched on.
multiple (default value is true)
- it is possible to select multiple elements at a time if this option is switched on.autoSelectFirst (default value is false)
- specifies that the first element of collection will be selected automatically on every data
loading.
To imply sense into selection, you need a way to execute particular actions depending on whether the element is selected or not. There are the following options to do this:
[(selected)]
binding
rtSelectable
directive contains selected
property, which can be used to respond on the element selection state changes.
Below there is an example showing the inline-editing functionality implemented with the selected
property.
You can also use
selected
property with two-way binding syntax. Selection model will update binded property and react to it changes depending on the
current state of selection.
The second way to process selection is events.
There are three events on which we can subscribe
itemSelected
, itemDeselected
, and selectionChanged
. All of them produce the parameter which implements
RTSelectionEvent
contract from right-angled
library.
The events are generated by the
rtSelectable
directive as well as by the rtSelectionArea
.
Below you can see the example demonstrating the following features:
itemSelected
and itemDeselected
handlers of the rtSelectionArea
event display notifications that the
element has been selected or deselected.
rtSelectable
event directive uses
restcountries.eu service to fetch and display the detailed information about the country.
RTSelectionService
This approach is the most flexible, because it gives the access to full selection functionality.
The
RTSelectionService
service is configured as provider for rtSelectionArea
directive. So the way to access
RTSelectionService
from your component depends on where your component is located. If your component is located inside the
rtSelectionArea
component, you can simply specify RTSelectionService
as a parameter of your component constructor.
In the example below we have implemented the custom button component which injects the
RTSelectionService
service and calls its getSelectedElements
method on click to display currently selected elements in the
popup.
If you want to implement the component placed as a parent for the element with the
rtSelectionArea
directive, you can reference rtSelectionArea
using the
ViewChild decorator and use its
selectionService
property to access selection functionality.
The example below implements the same scenario as the previous one, but, instead of the custom button, we implement click event handler right in our
sample component and use
rtSelectionArea
requested by the
ViewChild decorator. .
rtSelectionArea
from Template
One another way to interact with the selection model is referencing
rtSelectionArea
directive right in your template and using its selectionService
property.
Below you can see the example of buttons which utilizes the
selectionService.selectAll
and selectionService.deselectAll
methods.
rtSelectionCheckboxFor
directiveThis directive will be useful in case if you need to implement the selection model that uses checkboxes instead of the click-based elements selection.
trackBy
function
This option was inspired by the
trackBy
option of the angular
ngFor directive.
The idea is that after data reload selection service performs check of the currently selected elements. For example, in most of the cases when the list is refreshed, the same records will be returned from the server. But as long as new objects will be constructed as elements, regular reference equality check will not be able to restore selection state of elements.
If you have the way to identify your elements (unique
id
property, for example), you can specify your own implementation of the trackBy
function, which will be used for selection
state restoring.
In the below example, we are using the
trackBy
implementation, which returns the name
property of element. So, the selection is preserved after data reload.
preventEventsDefaults
and stopEventsPropagation
parametersTwo more options you will not probably need often, but if it happens, they are more than necessary.
The thing is that the selection directives use the
stopPropagation and
preventDefault methods in mouse and keyboard handlers
for the case when selection was performed successfully. It is required, for example, to avoid selection of the whole text on the page when
Ctrl + A
key combination is pressed, or to prevent the entire page scrolling when ↑
and ↓
keys pressed
and so on.


This is for ONA conference
This is paragraph text for any other conference
The ICFJ Knight Fellows create a culture of news innovation and experimentation worldwide to deepen coverage, expand news delivery and engage citizens in the editorial process. Through that work, they launch web and mobile tools that transform journalism in their regions and spark new opportunities globally.
We've curated a list of ICFJ Knight tools that we think would offer great possibilities for journalists and technologists around the globe. If you adopt any of these tools, or lead any new projects inspired by them, tweet at us via @ICFJKnight. Our Fellows and the ICFJ Knight team are available to help you get started.
The Knight International Journalism Fellowships program is funded by the John S. and James L. Knight Foundation. The Fellows build on past successes in the Knight program, which has a strong record of achieving impact. They work in countries where there is a good opportunity to create the news media of the future.
With additional support from the Bill & Melinda Gates Foundation, Knight Fellows are empowering journalists in sub-Saharan Africa and India to use the latest digital tools to tell compelling stories on health and development issues.


This past weekend, I took my first leap into home automation! I had wanted to be able to control my bedroom lights without the switch, so after evaluating smart bulbs, dimming switches, and alternate light controllers, I decided to install the Shelly Dimmer 2. The Shelly Dimmer allows me to keep the switches, bulbs, and panel the same, while only making a wiring change behind the panel. I'm also not particularly interested in alternate colors or physical dimming, so this is the perfect option for me.
This is what the switch panel looks like in my bedroom. The light switch is a 1301 7w Single Pole Single Throw switch. This means there is only one switch (pole) that controls one light (throw). In other words, a basic on-off switch.
Note: I knew next to nothing about electrical wiring prior to this, aside from a faint memory of how AC circuits worked from my university physics class. Fortunately, I have a friend who clarififed my understanding throughout this process. Thanks Gank!
I didn't realize I needed so many additional components apart from the Shelly. For instance, at the least, I needed
However, for safety reasons, I also bought
The Shelly guide presents different installation methods, but the setup for "standard power grid with neutral" is the one I suspected would suit my home's wiring, but I intended to clarify.
The other thing to clarify was which wire coming from the switch was the Line (power) or the Load (light). So with the gloves on, I unscrewed the panel.
I observed that on the left side, the switch has a white wire connected to ground, and on the right side it has two black wires. Using a wire tester, I determined that the top wire was the Load, and the bottom wire was the Line. Thanks to the advice of the online wiring videos, I turned off power to my room from by basement's circuit breaker. The next step was to find a wire nut that would hold the neutral wires. A little fidgeting allowed me to pull it out. Good to confirm that I can proceed with the standard installation.
First, I disconnected the Load (top) wire from the switch, and connected it to the O (output) hole on the dimmer.
Second, I disconnected the Line (bottom) wire from switch, and connected it to the middle L (Line) hole on the dimmer.
Third, I connected a new black wire from the Load (top) screw on the switch to SW1 hole on the dimmer.
Fourth, I connected a new black wire from the Line (bottom) screw on the switch to the L (Line) hole on the dimmer. And finally, I connected a new pink wire from the N (Neutral) hole on the dimmer to the nut containing the neutral wires. I unscrewed the wire nut and overlayed (and slightly twisted) the pink wire over the others.
After completing the installation, it looked like this.
I turned the power back on from the basement, flicked the switch on, and observed the lights transitioning into brightness.
Initially, my toggle switch only triggered a change when it went from its "Off" position to its "On" position. The Shelly web interface allowed me to change the button type to "Edge", to allow both positions of the switch to trigger a state change. However, using the Shelly interface reconfirmed by belief that Home Assistant was the right way to go. I installed it on my Raspberry Pi NAS running NixOS, and linked it to the dimmer. My configuration can be found here: https://github.com/smasher164/nas/blob/bc8a5780ee6354fa732a0c406a924f14135f43a7/configuration.nix#L90. Even better, exposing Home Assistant over Tailscale's VPN lets me remotely control my bedroom lights!
Although I was nervous at first, this built my confidence to try my hand at more home automation. Next up is the garage!


URL
http://localhost:8110/
Description
A sample php web application with SQL injection everywhere :).
Simple sample web application for learning SQL injection. This sample application is a membership site for registering image files and their associated information.
HOW to SETUP
Please read README.md
HOW to USE
* Register your account and login.
- Access http://localhost:8110/ on browser
- To Register your account, press [Regist New User]
- specify username, password, age and then press confirm and complete.
- Now your account has created. click [Login] link, then login with your registered account.

- In MYPAGE, press [Regist entry]
- specify subject, contents, mailaddr, imagefile for upload.
- press confirm and complete. Now your entry has registerd. press [Return to MYPAGE].
- To display the your registered entries, press[Show your registered entry list].
- In "your registered entry list" page, you can search entries by specify subject or contents.
* Modify your account
- In MYPAGE, press [Modify user]
- specify username, password, age and then press confirm and complete.
* If no password is specified, the application will keep the current password.
* Revoke your account
- In MYPAGE, press [Revoke user]
- specify checkbox for your confirm and then press complete.
* *If you revoke your account, the registered entries will also be deleted from the database.


Cookies
|
SameSite Cookies
|
Partitioned Cookies
|
LocalStorage
|
IndexDB
IndexDB 🧳
IndexDB contents
Name
Set in store
Clear store
Create DB
Destroy DB


Corbyn pays tribute to Labour campaigner Jayne Rae who died after tearful video
Ms Rae died on Monday morning after a year with terminal breast cancer.
Jeremy Corbyn has paid tribute to a Labour campaigner who died days after describing being left in hospital without treatment for hours.
Jayne Rae, 53, from Whittle-le-Woods in Lancashire, died on Monday morning after a year with terminal breast cancer.
In a video first shared by Mr Corbyn on Sunday, Ms Rae told of arriving for hospital treatment to find a scene that “looked like Beirut”.
“I have never seen people lying in corridors covered in blood, dying, doctors under stress, nurses unable to help to the point of they were crying in frustration.”
She described tearfully how her mother was “begging” staff to save her life after she spent several hours waiting for treatment in “extreme pain”.
Following news of her death, Mr Corbyn tweeted: “Incredibly sad to hear that Jayne died this morning. Jayne’s life ended as she lived it: making the world a better place for others.
“Jayne sent me this video which shows her passion for defending our NHS and making sure it’s there for everyone whenever they need it.”
Last week, Ms Rae’s daughter posted pictures to Facebook of a bunch of red roses sent by the Labour leader, along with a note reading: “Dear Jayne, thank you for all you do helping others. We will build a world of care for all. With our love and support, Jeremy x.”
Ms Rae had previously received media attention after holding a “last” birthday party in July to raise money for local community projects.
RIP Jayne became the top trend on Twitter on Monday afternoon as others paid tribute to the campaigner.


About
About Us
Corporate Sustainability
Awards
Sustainability
Sustainability
Alliances
Certifications
Health and safety during covid-19
Products and Services
Sustainability
Alliances
Certifications
Health and safety during covid-19
Contact Us


Get Your laundry done very Simple & Convenient.
You schedule a Pickup Date and time Online from any of our platforms .
We pick up your laundry and dry cleaning items from your doorstep.
Based on your prefered mode of cleaning, We clean,Iron And Package
We deliver your fresh clean clothes.
Fizle is a home and Corporate cleaning service Provider tha aims at bringing comfort and relaxationto its cclient soas to yeild productivity on thier set goal without Stress
We re Alway on standby to help You


This project was done under Network Of Creative Thinkers, a Panchgani based Design Agency. Nooks & Valleys aims to showcase hidden gems from different parts of the world along with some interesting nooks/information/insights that might help curious travellers experience truly riveting experiences for their next vacation.


Create an account
Username
Invalid username
Email
Invalid email
Password
Invalid password
Password
Invalid password confirmation
Sign up
I have an account already


Class ContainerItem
Class that represents all container items in the game.
Implements
Inherited Members
Namespace: Fibula.Items
Assembly: Fibula.Items.dll
Syntax
public class ContainerItem : Item, IContainerItem, IItem, IThing, IEquatable<IThing>, ICloneableThing<IThing>, IContainedThing, IThingContainer, ILocatable
Constructors
| Improve this Doc View SourceContainerItem(IItemTypeEntity)
Initializes a new instance of the ContainerItem class.
Declaration
public ContainerItem(IItemTypeEntity type)
Parameters
| Type | Name | Description |
|---|---|---|
| IItemTypeEntity | type | The type of this item. |
Properties
| Improve this Doc View SourceCapacity
Gets the capacity of this container.
Declaration
public virtual byte Capacity { get; }
Property Value
| Type | Description |
|---|---|
| System.Byte |
Content
Gets the collection of items contained in this container.
Declaration
public IList<IItem> Content { get; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.IList<IItem> |
Item[Int32]
Attempts to retrieve an item from the contents of this container based on a given index.
Declaration
public IItem this[int index] { get; }
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | index | The index to retrieve. |
Property Value
| Type | Description |
|---|---|
| IItem | The item retrieved, if any, or null. |
Methods
| Improve this Doc View SourceAddContent(IThingFactory, IThing, Byte)
Attempts to add a IThing to this container.
Declaration
public virtual (bool result, IThing remainder) AddContent(IThingFactory thingFactory, IThing thing, byte index = 255)
Parameters
| Type | Name | Description |
|---|---|---|
| IThingFactory | thingFactory | A reference to the factory of things to use. |
| IThing | thing | The IThing to add to the container. |
| System.Byte | index | Optional. The index at which to add the IThing. Defaults to byte.MaxValue, which instructs to add the IThing at any free index. |
Returns
| Type | Description |
|---|---|
| System.ValueTuple<System.Boolean, IThing> | A tuple with a value indicating whether the attempt was at least partially successful, and false otherwise. If the result was only partially successful, a remainder of the thing may be returned. |
Clone()
Creates a new ContainerItem that is a shallow copy of the current instance.
Declaration
public override IThing Clone()
Returns
| Type | Description |
|---|---|
| IThing | A new ContainerItem that is a shallow copy of this instance. |
Overrides
| Improve this Doc View SourceCountAmountAt(Byte, UInt16)
Counts the amount of the specified content item at a given index within this container.
Declaration
public sbyte CountAmountAt(byte index, ushort typeIdExpected = 0)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Byte | index | The index at which to count. |
| System.UInt16 | typeIdExpected | Optional. The type id of the content item expected to be found. |
Returns
| Type | Description |
|---|---|
| System.SByte | The count of the item at the index. If |
FindThingAtIndex(Byte)
Attempts to find an IThing whitin this container.
Declaration
public IThing FindThingAtIndex(byte index)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Byte | index | The index at which to look for the IThing. |
Returns
| Type | Description |
|---|---|
| IThing | The IThing found at the index, if any was found. |
InvokeContentAdded(IItem)
Invokes the ContentAdded event on this container.
Declaration
protected void InvokeContentAdded(IItem itemAdded)
Parameters
| Type | Name | Description |
|---|---|---|
| IItem | itemAdded | The item added. |
InvokeContentRemoved(Byte)
Invokes the ContentRemoved event on this container.
Declaration
protected void InvokeContentRemoved(byte index)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Byte | index | The index within the container from where the item was removed. |
InvokeContentUpdated(Byte, IItem)
Invokes the ContentUpdated event on this container.
Declaration
protected void InvokeContentUpdated(byte index, IItem updatedItem)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Byte | index | The index within the container from where the item was updated. |
| IItem | updatedItem | The item that was updated. |
IsChildOf(IItem)
Checks that this item's parents are not this same item.
Declaration
public bool IsChildOf(IItem item)
Parameters
| Type | Name | Description |
|---|---|---|
| IItem | item | The parent item to check. |
Returns
| Type | Description |
|---|---|
| System.Boolean | True if the given item is a parent of this item, at any level of the parent hierarchy, false otherwise. |
RemoveContent(IThingFactory, ref IThing, Byte, Byte)
Attempts to remove a thing from this container.
Declaration
public virtual (bool result, IThing remainder) RemoveContent(IThingFactory thingFactory, ref IThing thing, byte index = 255, byte amount = 1)
Parameters
| Type | Name | Description |
|---|---|---|
| IThingFactory | thingFactory | A reference to the factory of things to use. |
| IThing | thing | The IThing to remove from the container. |
| System.Byte | index | Optional. The index from which to remove the IThing. Defaults to byte.MaxValue, which instructs to remove the IThing if found at any index. |
| System.Byte | amount | Optional. The amount of the |
Returns
| Type | Description |
|---|---|
| System.ValueTuple<System.Boolean, IThing> | A tuple with a value indicating whether the attempt was at least partially successful, and false otherwise. If the result was only partially successful, a remainder of the thing may be returned. |
ReplaceContent(IThingFactory, IThing, IThing, Byte, Byte)
Attempts to replace a IThing from this container with another.
Declaration
public (bool result, IThing remainderToChange) ReplaceContent(IThingFactory thingFactory, IThing fromThing, IThing toThing, byte index = 255, byte amount = 1)
Parameters
| Type | Name | Description |
|---|---|---|
| IThingFactory | thingFactory | A reference to the factory of things to use. |
| IThing | fromThing | The IThing to remove from the container. |
| IThing | toThing | The IThing to add to the container. |
| System.Byte | index | Optional. The index from which to replace the IThing. Defaults to byte.MaxValue, which instructs to replace the IThing if found at any index. |
| System.Byte | amount | Optional. The amount of the |
Returns
| Type | Description |
|---|---|
| System.ValueTuple<System.Boolean, IThing> | A tuple with a value indicating whether the attempt was at least partially successful, and false otherwise. If the result was only partially successful, a remainder of the thing may be returned. |
Events
| Improve this Doc View SourceContentAdded
A delegate to invoke when new content is added to this container.
Declaration
public event OnContentAdded ContentAdded
Event Type
| Type | Description |
|---|---|
| OnContentAdded |
ContentRemoved
A delegate to invoke when content is removed from this container.
Declaration
public event OnContentRemoved ContentRemoved
Event Type
| Type | Description |
|---|---|
| OnContentRemoved |
ContentUpdated
A delegate to invoke when content is updated in this container.
Declaration
public event OnContentUpdated ContentUpdated
Event Type
| Type | Description |
|---|---|
| OnContentUpdated |


This is a basic introduction to the JavaScript computer language.
JavaScript is now one of the most popular and useful computer languages on the planet. It can be used to create web pages, web servers, mobile Apps and even inside embedded micro-controllers!
JavaScript 'Apps' are computer programs written as lines of text. Each line of text is made up of one or more statements, which are separated by a ';' (semi-colon) character like this:-
statement1; statement2; statement3;
These statements contain instructions for the computer to perform (execute) and the ';' character at the end tells the computer where each statement ends and the next one starts.
We usually place statements on separate lines as this can help when looking for bugs (problems). Here's a simple JavaScript program made using two statements. It displays the word "Hello" in a popup box:
var s = "Hello"; alert( s );
You should also add comments to your programs, which are ignored by the computer but help you and others understand what the program is supposed to be doing. To do this you use the '//' (double forward slash) characters.
For example we can add a comment line to the program above:
//This shows a popup message. var s = "Hello"; alert( s );
Variables are declared using the 'var' keyword and allow us to store data such as text, numbers and objects in the computer's memory using a name of our choosing. We can then read and change the stored data later by using the name we have given to the variable.
We can store text and display it like this:
//This shows the message 'Hi'. var myText = "Hi"; alert( myText );
Note: Text data should always be enclosed in quotes or the computer will think it's a variable name.
We can store a number and then display it like this:
//This shows the message '7'. var myNum = 7; alert( myNum );
We can change the contents of our variables like this:
//This shows the message '6'. var myNum = 3; myNum = myNum * 2; alert( myNum );
Note: JavaScript is case sensitive, so myNum is not the same MyNum.
For example:
//This shows the message 'Answer: 17'. var myNum = 7; var myText = ""; myNum = myNum * 2 + 3; myText = "Answer: " + myNum; alert( myText );
Note: When you add a number to text, the number is automatically converted to text.
In JavaScript, we can store and use these data types:
String - Text data.We can store all of these types in variables and also use them in expressions, but the Array and Object data types are special 'reference' types, which means variables containing these types actually hold a reference (or pointer) to the original data rather than the actual data.
When you copy reference types from one variable to another, you will not get a separate copy of the data in the computer's memory, but rather a copy of the reference.
Here are a few examples of using various data types:
//This shows the message 'true'. var isGood = true; alert( isGood );
//This calculates a circle's circumference. var pi = 3.14; var r = 5; alert( 2 * pi * r );
//This shows the message 'Hello World'. var s = "Hello"; alert( s + " World" );
//This shows the message 'First item: 3'. var myArray = [3,4,5]; var firstItem = myArray[0]; alert( "First item: " + firstItem );
//This shows the message 'First item: fred'. //(Arrays are reference types). var myArray1 = ["a","b","c"]; var myArray2 = myArray1; myArray1[0] = "fred"; alert( "First item: " + myArray2[0] );
if( x > 1000 ) splat = true;The line of code above would set the variable 'splat' to true if the variable 'x' contains a value greater than 1000. We can also use the 'else' statement in combination with 'if' statement to do one thing or the other:
if( splat ) image = "splat.jpg"; else image = "bird.jpg";If we want to check a whole lot of conditions, we can do something like this:
//Find the correct photo. if( name=="Sam" && male ) image = "Samuel.jpg"; else if( name=="Sam" ) image = "Samanther.jpg"; else if( name=="Bill" ) image = "William.jpg"; else image = "Anyone.jpg";
Note: We use the double equals sign when we comparing variables and the single equals sign when we are assigning (setting) variables.
In order to execute more than one statement after an 'if' or 'else' clause, we can use the '{}' (brace) characters to group statements into a 'block' of code:For example, in a game we might have some statements like this to check if the character has crashed and the game is over:
if( splat ) { imageName = "splat.jpg"; gameOver = true; } else { imageName = "bird.jpg"; gameOver = false; count++; }
We can perform various mathematical, logical and text operations in JavaScript such as add, subtract, divide and multiply but you will often see a statement like this:
num += 2;This may look confusing at first, but this '+=' operation simply adds 2 to the contents of variable 'num'. This is a shorter and more efficient way of writing the following:
num = num + 2;Here are some examples of the most common operations and their meanings:
z = x * y; //z = x multiplied by y z = x / y; //z = x divided by y z = x % y; //z = remainder of x divided by y num++; //add 1 to the contents of num num--; //subtract 1 from contents of num num += 3; //add 3 to the contents of num num -= x; //subtract x from contents of num num *= 9; //multiply the contents of num by 9 num /= 9; //divide the contents of num by 9 b = 7; //set b to the value 7 if( b == 4 ) //if b is equal to 4 if( b != c ) //if b is not equal to c if( b > c ) //if b is greater than c if( b < c ) //if b is less than c if( b >= c ) //if b is greater or equal to c if( b <= c ) //if b is less than or equal to c if( b || c ) //if b or c is true if( b && c ) //if b and c are true if( b && !c ) //if b is true and c is false
Another very useful operation is the ?: or 'Ternary' operation. This allows us to conditionally get one of two possible values using a single line of code. For example:
adult = (age > 18 ? true : false);
This is the same as writing:
if( age > 18 ) adult = true; else adult = false;
You can use this in expressions too. Here's another example:
meals = 7 * (name=="Sam" ? 6 : 3);
In JavaScript we often want to repeat a block of statements many times and the two most common ways of doing this are with the 'while' and 'for' statements.
A 'while' statement will keep repeating a block of statements while a given expression is true. For example, the following code will keep asking the user if they are ready until they answer "yes".
var answer; while( answer != "yes" ) { answer = prompt( "Are you ready?" ); }A 'for' statement is usually used to repeat a block of statements until a counter has reached a certain value. The following code will add the letter 'O' to the letter "G" ten times, followed by the letters "GLE".
var txt = "G"; for( var i=0; i<10; i++ ) { txt += "O"; } txt += "GLE" alert( txt );
In the above sample, the counter variable 'i' starts at zero and increases by 1 each time the block of code is complete, but only while 'i' contains a value less than 10. So the variable 'i' will range from zero to nine.
For example, if we needed to show a random number to the user and we expect to do that more than once in our program, then we could define a function called 'ShowRandom' and call it like this:
//Show a random number. function ShowRandom() { var num = Math.random(); alert( num ); } ShowRandom();If we want the function to behave slightly differently each time we call it, then we can pass input values to the function. These are known as input 'parameters'.
So for example we might want to change the range of the random numbers produced by our 'ShowRandom' function by providing a 'range' parameter like this:
//Show a random number in a given range. function ShowRandom( range ) { var num = Math.random() * range; alert( num ); } ShowRandom( 10 ); ShowRandom( 100 );
As well as using input values, we can also get an output ('return') value from our function too, by using the 'return' statement. This allows our function to do calculations based on the input parameters and return a result afterwards.
We could for example create our own function to calculate the area of a circle like this:
//Get the area of a circle. //(to two decimal places) function GetAreaOfCircle( radius ) { var area = Math.PI * radius * radius; return area.toFixed(2); } //Show area of a circle with radius 4.8cm var area = GetAreaOfCircle( 4.8 ); alert( "Area = " + area + " cm" );In Javascript we don't have to place our function before the statement which uses it, so we can put it at the bottom of our script if we prefer, like this:
//Show volume of box 4cm x 4cm x 2cm var vol = GetVolumeOfBox( 4 ,4, 2 ); alert( "Volume = " + vol ); //Get the volume of a box. function GetVolumeOfBox( width, height, depth ) { var volume = width * height * depth; return volume; }
We often want to manipulate strings (text) in JavaScript and there are a number of useful methods available to us for doing this. Note that the position of characters within a string (known as their 'index') always starts at zero.
One of the most useful string methods is the 'split' method. This allows us to split the string into parts and store each part in an array. The split method takes a single parameter which tells the computer which character to look for while splitting the string.
For example if we want to get the first and third names in a comma separated list of names, we do the following:
//Get the first and third list items. var names = "Fred,Bill,Amy,Sally"; var namesArray = names.split(","); var firstName = namesArray[0]; var thirdName = namesArray[2];
Another very useful string method is the 'indexOf' method. This allows us to find the index (position) of a string within another string.
For example, we might want to check if a file is a text file by searching for the string '.txt' in its file name like this:
//Check for text files. var isTextFile = false; if( fileName.indexOf(".txt" ) > -1 ) isTextFile = true;
Here are some more examples of the many string manipulation methods available to us in JavaScript:
//Set our test string var txt = "Big Friendly Giant"; //Get the number of characters in the string. var numLetters = txt.length; //Get a copy the first character. var firstLetter = txt.slice( 0, 1 ); //Get a copy the last character. var lastLetter = txt.slice( -1 ); //Get a copy the first word. var firstWord = txt.substring( 0, 3 ); //Get a copy of the second word. var secondWord = txt.substring( 4, 12 ); //Get the start index of the word 'Giant'. var indexOfGiant = txt.indexOf( "Giant" ); //Get the start index of the word 'Big'. var indexOfBig = txt.indexOf( "Big" ); //Get the index of the last space. var indexOfLastSpace = txt.lastIndexOf( " " ); //Get a copy of string with word replaced. var changed = txt.replace( "Big", "Little" ); //Get a lower case copy of the string. var lowerCase = txt.toLowerCase(); //Get an upper case copy of the string. var upperCase = txt.toUpperCase(); //Split the string into an array of words. var arrayOfWords = txt.split(" ");


Click for Instructions
Hold
right click
to draw the image.
Left click
to annotate the image using up to three modes:
Dot mode
indicates the location of the object with one left click.
Link mode
indicates head (1st click) and tail (2nd click).
Polygon mode
draws the segmentation mask of the object.
Bbox mode
draws the bounding box of the object by holding down left click.
The
Mode toggle
button indicates the current mode
Press
CTRL+Z
or click the
Undo
button to undo last deletion/annotation.
Press
C
to close polygon in polygon mode.
Click
Delete/Annotate
flip switch or press
D
to toggle between deleting and annotating.
Click the
Undo
button to undo your last deletion/annotation depending on your current mode.
Click the
Reset
button to clear all annotations.
Click the
Reposition
button to center the image and reset zoom.
Click the
Submit
button to finish current task.
Delete
Annotate
Transparency percentage