Keyboard shortcuts for Windows
Popular shortcuts
| Tool | Shortcut |
|---|---|
| Undo | Command + Z |
| Redo | Shift + Command + Z |
| Cut | Command + X |
| Copy | Command + C |
| Paste | Command + V |
| Paste in front | Command + F |
| Paste at back | Command + B |
| Paste in place | Shift + Command + B |
| Paste on all artboards | Option + Shift + Command + B |
| Check spelling | Command + I |
| Open the Color Settings dialog box | Shift + Command + K |
| Open the Keyboard Shortcuts dialog box | Option + Shift + Command + K |
| Open the Preferences dialog box | Command + K |
Work with documents
| Tool | Shortcut |
|---|---|
| Create a document | Command + N |
| Create a document from a template | Shift + Command + N |
| Create a document without opening the New Document dialog box | Option + Command + N |
| Open a document | Command + O |
| Place a file in the document | Shift + Command + P |
| Open the File Information dialog box | Option + Shift + Command + I |
| Open the Document Setup dialog box | Option + Command + P |
| Browse in Adobe Bridge | Option + Command + O |
| Close the document window | Command + W |
| Save changes made to the document | Command + S |
| Open the Save As dialog box | Shift + Command + S |
| Save a copy of the document | Option + Command + S |
| Save the document as script files | Command + F12 |
| Open the Export for screens dialog box | Option + Command + E |
| Open the Save For Web dialog box | Option + Shift + Command + S |
| Package the document | Option + Shift + Command + P |
| Command + P | |
| Exit the application | Command + Q |
Select tools
| Tool | Shortcut |
|---|---|
| Artboard tool | Shift + O |
| Selection tool | V |
| Direct Selection tool | A |
| Magic Wand tool | Y |
| Lasso tool | Q |
| Pen tool | P |
| Curvature tool | Shift + ~ |
| Blob Brush tool | Shift + B |
| Add Anchor Point tool | + (plus) |
| Delete Anchor Point tool | - (minus) |
| Switch to Anchor Point tool | Shift + C |
| Type tool | T |
| Touch Type tool | Shift + T |
| Line Segment tool | \ (backslash) |
| Rectangle tool | M |
| Ellipse tool | L |
| Paintbrush tool | B |
| Pencil tool | N |
| Shaper tool | Shift + N |
| Rotate tool | R |
| Reflect tool | O |
| Scale tool | S |
| Warp tool | Shift + R |
| Width Tool | Shift+W |
| Free Transform tool | E |
| Shape Builder Tool | Shift+M |
| Perspective Grid Tool | Shift+P |
| Perspective Selection Tool | Shift+V |
| Symbol Sprayer tool | Shift + S |
| Column Graph tool | J |
| Mesh tool | U |
| Gradient tool | G |
| Eyedropper tool | I |
| Blend tool | W |
| Live Paint Bucket tool | K |
| Live Paint Selection tool | Shift + L |
| Slice tool | Shift + K |
| Eraser tool | Shift + E |
| Scissors tool | C |
| Hand tool | H |
| Zoom tool | Z |
| Switch to Smooth tool while using Blob Brush tool | Press Option |
View artwork
| Tool | Shortcut |
|---|---|
| Toggle between screen modes: Normal Screen Mode, Full Screen Mode with Menu Bar, Full Screen Mode | F |
| Fit imageable area in window | Double-click Hand tool |
| Magnify 100% | Double-click Zoom tool or press Command + 1 |
| Switch to Hand tool (when not in text-edit mode) | Spacebar |
| Switch to Zoom tool in magnify mode | Command + Spacebar |
| Switch to Zoom tool in reduce mode | Command + Option + Spacebar |
| Move Zoom marquee while dragging with the Zoom tool | Spacebar |
| Hide bounding box | Shift + Control + B |
| Hide unselected artwork | Command+ Option + Shift + 3 |
| Convert between horizontal and vertical guide | Option-drag guide |
| Release guide | Command + Shift-double-click guide |
| Show document template | Command + H |
| Show/Hide artboards | Command + Shift + H |
| Show/Hide artboard rulers | Command + R |
| Show transparency grid | Shift + Command + D |
| View all artboards in window | Command + Option + 0 (zero) |
| Paste in place on the active artboard | Command + Shift+V |
| Exit Artboard tool mode | Esc |
| Create artboard inside another artboard | Shift-drag |
| Select multiple artboards in the Artboards panel | Command + click |
| Navigate to next document | Command + F6 |
| Navigate to previous document | Command + Shift + F6 |
| Navigate to next document group | Command + Option + F6 |
| Navigate to previous document group | Command + Option + Shift + F6 |
| Toggle between Outline and GPU Preview of the document | Command + Y |
| Toggle between GPU and CPU Preview of the document | Command + E |
| View the document in Overprint Preview mode | Option + Shift + Command + Y |
| View the document in Pixel Preview mode | Option + Command + Y |
| Exit Full Screen mode | Esc |
| Zoom in | Command + = |
| Zoom out | Command + - |
| Hide guides | Command + ; |
| Lock guides | Option + Command + ; |
| Make guides | Command + 5 |
| Release guides | Option + Command + 5 |
| Show/ hide smart guides | Command + U |
| Show/ hide perspective grid | Command + Shift + I |
| Show grid | Command + ' |
| Snap to grid | Shift + Command + ' |
| Snap to point | Option + Command + ' |
Work with selections
| Tool | Shortcut |
|---|---|
| Switch to last-used selection tool (Selection tool, Direct Selection tool, or Group Selection tool) | Command + ` |
| Switch between Direct Selection tool and Group Selection tool | Option |
| Add to a selection with Selection tool, Direct Selection tool, Group Selection tool, Live Paint Selection tool, or Magic Wand tool | Shift-click |
| Subtract a selection with Selection tool, Direct Selection tool, Group Selection tool, or LIve Paint Selection tool | Shift-click |
| Subtract from selection with Magic Wand tool | Option-click |
| Add to selection with Lasso tool | Shift-drag |
| Subtract from selection with Lasso tool | Option-drag |
| Change pointer to cross hair for Lasso tool | Caps Lock |
| Select artwork in active artboard | Command + Option + A |
| Create crop marks around selected object | Option + C + O |
| Select all | Command + A |
| Deselect | Shift + Command + A |
| Reselect | Command + 6 |
| Select the object above the current selection | Option + Command + ] |
| Select the object below the current selection | Option + Command + [ |
| Select behind an object | Press Command+click twice |
| Select behind in isolation mode | Command+click twice |
| Group the selected artwork | Command + G |
| Ungroup the selected artwork | Shift + Command + G |
| Lock a selection | Command + 2 |
| Unlock a selection | Option + Command + 2 |
| Hide a selection | Command + 3 |
| Show all selections | Option + Command + 3 |
| Move selection in user-defined increments | Right Arrow, Left Arrow, Up Arrow, or Down Arrow |
| Move selection in 10x user-defined increments | Shift + Right Arrow, Left Arrow, Up Arrow, or Down Arrow |
| Lock all deselected artwork | Command + Option + Shift + 2 |
| Constrain movement to 45° angle (except when using Reflect tool) | Hold down Shift |
| Bring a selection forward | Command + ] |
| Move a selection to the front | Shift + Command + ] |
| Send a selection backward | Command + [ |
| Move a selection to the back | Shift + Command + [ |
Draw
| Tool | Shortcut |
|---|---|
| Constrain a shape’s proportions or orientation to: equal height and width for rectangles, rounded rectangles, ellipses, and grids Increments of 45° for line and arc segments Original orientation for polygons, stars, and flares | Shift-drag |
| Move a shape while drawing it | spacebar-drag |
| Draw from the center of a shape (except for polygons, stars, and flares) | Option-drag |
| Increase or decrease polygon sides, star points, arc angle, spiral winds, or flare rays | Start dragging, then press the Up Arrow or Down Arrow |
| Keep the inner radius of a star constant | Start dragging, then hold down Command |
| Keep the sides of a star straight | Option-drag |
| Switch between an open and closed arc | Start dragging, then hold down C |
| Flip an arc, keeping the reference point constant | Start dragging, then hold down SF |
| Add or subtract winds from a spiral while increasing the length of the spiral | Start dragging, then Option-drag |
| Change the decay rate of a spiral | Start dragging then Command-drag |
| Add or remove horizontal lines from a rectangular grid or concentric lines from a polar grid | Start dragging, then press the Up Arrow or Down Arrow |
| Add or remove vertical lines from a rectangular grid or radial lines from a polar grid | Start dragging, then press the Right Arrow or Left Arrow |
| Decrease the skew value for horizontal dividers in a rectangular grid or radial dividers in a polar grid by 10% | Start dragging, then press F |
| Increase the skew value for horizontal dividers in a rectangular grid or radial dividers in a polar grid by 10% | Start dragging, then press V |
| Decrease the skew value for vertical dividers in a rectangular grid or concentric dividers in a polar grid by 10% | Start dragging, then press X |
| Increase the skew value for vertical dividers in a rectangular grid or concentric dividers in a polar grid by 10% | Start dragging, then press C |
| Increase size of Blob Brush | ] (right square bracket) |
| Decrease size of Blob Brush | [ (left square bracket) |
| Constrain Blob Brush path horizontally or vertically | Shift |
| Switch through drawing modes | Shift + D |
| Join two or more paths | Select the paths, then press Command + J |
| Average two or more paths | Select the paths, then press Option + Command + J |
| Create corner or smooth join | Select the paths, then press Shift + Command + Option + J |
| Create a compound path | Command + 8 |
| Release a compound path | Option + Shift + Command + 8 |
| Edit a pattern | Shift + Command + F8 |
| Perspective Grid Tool | Shift + P |
| Perspective Selection Tool | Shift + V |
| Perspective Grid | Command + Shift + I |
| Moving objects perpendicularly | Press the number 5 key, then click and drag the object |
| Switching perspective planes | Use the Perspective Selection tool and then press 1 for left grid, 2 for horizontal grid, 3 for right grid, or 4 for no active grid |
| Copying objects in perspective | Command + Option + drag |
| Repeat transforming objects in perspective | Command + D |
| Switching between drawing modes | Shift + D |
Edit shapes
| Tool | Shortcut |
|---|---|
| Switch Pen tool to Convert Anchor Point tool | Option |
| Switch between Add Anchor Point tool and Delete Anchor Point tool | Option |
| Switch Scissors tool to Add Anchor Point tool | Option |
| Switch Pencil tool to Smooth tool | Option |
| Move current anchor point while drawing with Pen tool | Spacebar-drag |
| Cut a straight line with Knife tool | Option-drag |
| Cut at 45° or 90° with Knife tool | Shift + Option-drag |
| Use shape mode buttons in Pathfinder panel to create compound paths | Option + Shape mode |
| Erase unwanted closed regions created using Shape Builder tool | Option + click the closed region |
| Select the Shape Builder tool | Shift + M |
| Display rectangular marquee to easily merge multiple paths (when using Shape Builder tool) | Shift + click + drag |
| Increase the intensity of symbols (when using Symbolism tool) | Shift + } |
| Decrease the intensity of symbols (when using Symbolism tool) | Shift + { |
| Blend objects | Option + Command + B |
| Finish adding objects to the blend | Option + Shift + Command + B |
| Distort objects using a warp-shaped envelope | Option + Command + Shift + W |
| Distort objects using a mesh as the shape of the envelope | Option + Command + M |
| Distort objects using another object as the shape of the envelope | Option + Command + C |
Work with Live Paint groups
| Tool | Shortcut |
|---|---|
| Switch to Eyedropper tool and sample fill and/or stroke | Option-click + Live Paint Bucket tool |
| Switch to Eyedropper tool and sample color from an image or intermediate color from a gradient | Option + Shift-click + Live Paint Bucket tool |
| Select opposite Live Paint Bucket tool options (if Paint Fills and Paint Strokes are currently selected, switch to Paint Fills only) | Shift + Live Paint Bucket tool |
| Fill across unstroked edges into adjacent faces | Double-click + Live Paint Bucket tool |
| Fill all faces that have same fill and stroke all edges that have same stroke | Triple-click + Live Paint Bucket tool |
| Switch to Eyedropper tool and sample fill and/or stroke | Option-click + Live Paint Selection tool |
| Switch to Eyedropper tool and sample color from an image or intermediate color from a gradient | Option + Shift-click + Live Paint Selection tool |
| Add to/subtract from a selection | Shift-click + Live Paint Selection tool |
| Select all connected faces /edges with same fill/stroke | Double-click + Live Paint Selection tool |
| Select all faces/edges with same fill/stroke | Triple-click + Live Paint Selection tool |
Work with objects
| Tool | Shortcut |
|---|---|
| Set origin point and open dialog box when using Rotate tool, Scale tool, Reflect tool, or Shear tool | Option-click |
| Duplicate and transform selection when using Selection tool, Scale tool, Reflect tool, or Shear tool | Option-drag |
| Transform pattern (independent of object) when using Selection tool, Scale tool, Reflect tool, or Shear tool | Tilde (~)-drag |
| Reapply a transformation to an object | Command + D |
| Apply last pathfinder effect to the selected object | Command + 4 |
| Move an object | Shift + Command + M |
| Open the Transform Each dialog box | Option + Shift + Command + D |
| Make a clipping mask | Command + 7 |
| Release a clipping mask | Option + Command + 7 |
| Toggle between fill and stroke | X |
| Set fill and stroke to default | D |
| Swap fill and stroke | Shift + X |
| Select gradient fill mode | > |
| Select gradient fill mode | Option + Command + G |
| Select color fill mode | < |
| Select no stroke/fill mode | / (forward slash) |
| Sample color from an image or intermediate color from gradient | Shift + Eyedropper tool |
| Sample style and append appearance of currently selected item | Option + Shift-click + Eyedropper tool |
| Add new fill | Command + / (forward slash) |
| Add new stroke | Command + Option + / (forward slash) |
| Reset gradient to black and white | Command-click gradient button in Tools panel or Gradient panel |
| Make Live Paint (when using the Paint Bucket tool) | Option + Command + X |
| Decrease Bristle brush size | [ |
| Increase Bristle brush size | ] |
Create variable width points
| Tool | Shortcut |
|---|---|
| Select multiple width points | Shift+click |
| Create non-uniform widths | Option+drag |
| Create a copy of the width point | Option+drag the width point |
| Change the position of multiple width points | Shift+drag |
| Delete selected width point | Delete |
| Deselect a width point | Esc |
Work with type
| Tool | Shortcut |
|---|---|
| Move one character right or left | Right Arrow or Left Arrow |
| Move up or down one line | Up Arrow or Down Arrow |
| Move one word right or left | Command + Right Arrow or Left Arrow |
| Move up or down one paragraph | Command + Up Arrow or Down Arrow |
| Select one word right or left | Shift + Command + Right Arrow or Left Arrow |
| Select one paragraph before or after | Shift + Command + Up Arrow or Down Arrow |
| Extend existing selection | Shift-click |
| Align paragraph left, right, or center | Command + Shift + L, R, or C |
| Justify text left | Command + Shift + J |
| Justify all lines | Shift + Command + F |
| Toggle line composer | Option + Shift + Command + C |
| Insert soft return | Shift + Enter |
| Highlight kerning | Command + Option + K |
| Reset horizontal scale to 100% | Command + Shift + X |
| Increase or decrease font size | Command + Shift + . or , |
| Increase or decrease font size by steps | Option + Command + Shift + . or , |
| Increase or decrease leading | Option + Up or Down Arrow (horizontal text) or Right or Left Arrow (vertical text) |
| Select tracking value | Option + Command + K |
| Reset tracking/kerning to 0 | Command + Option + Q |
| Increase or decrease kerning and tracking | Option + Right or Left Arrow (horizontal text) or Up or Down Arrow (vertical text) |
| Increase or decrease kerning and tracking by five times | Command + Option + Right or Left Arrow (horizontal text) or Up or Down Arrow (vertical text) |
| Increase or decrease baseline shift | Option + Shift + Up or Down Arrow (horizontal text) or Right or Left Arrow (vertical text) |
| Switch between Type and Vertical Type, Area Type and Vertical Area Type, and Path Type and Vertical Path Type tools | Shift |
| Switch between Area Type and Path Type, Vertical Area Type and Vertical Path Type tools | Option |
| Create outlines | Shift + Command + O |
| Open the Character panel | Command + T |
| Open the Paragraph panel | Option + Command + T |
| Open the Tabs panel | Shift + Command + T |
| Open the OpenType panel | Option + Shift + Command + T |
| Insert bullets | Option + 8 |
| Insert copyright symbol | Option + G |
| Insert ellipsis | Option + ; |
| Insert paragraph symbol | Option + 7 |
| Insert section symbol | Option + 6 |
| Insert trademark symbol | Option + 2 |
| Insert registered trademark symbol | Option + R |
| Superscript | Shift + Command + = |
| Subscript | Option + Shift + Command + = |
| Insert em dash | Option + Shift + - |
| Insert en dash | Option + - |
| Insert discretionary hyphen | Shift + Command + - |
| Toggle auto-hyphenation | Option + Shift + Command + H |
| Insert double left quotation marks | Option + [ |
| Insert double right quotation marks | Option + Shift + [ |
| Insert single left quotation marks | Option + ] |
| Insert single right quotation marks | Option + Shift + ] |
| Insert em space | Shift + Command + M |
| Insert en space | Shift + Command + N |
| Insert thin space | Option + Shift + Command + M |
| Show hidden characters | Option + Command + I |
Use panels
| Tool | Shortcut |
|---|---|
| Set options (except for Actions, Brushes, Swatches, and Symbols panels) | Option-click New button |
| Switch units of measurement | Option + Shift + Command + U |
| Delete without confirmation (except for Layers panel) | Option-click Delete button |
| Apply value and keep text box active | Shift + Enter |
| Select range of actions, brushes, layers, links, styles, or swatches | Shift-click |
| Select noncontiguous actions, brushes, layers (same level only), links, styles, or swatches | Command-click |
| Show/Hide all panels | Tab |
| Show/Hide all panels except the Tools panel and Control panel | Shift + Tab |
| Increase/ decrease values in logical fractions of the measurement unit | Command + Up or Down Arrow |
| Increase/ decrease measurement unit by 10x | Shift + Up or Down Arrow |
Actions panel
| Tool | Shortcut |
|---|---|
| Expand/Collapse entire hierarchy for action set | Option-click expansion triangle |
| Set options for action set | Double-click folder icon |
| Play a single command | Command-click Play Current Selection button |
| Begin recording actions without confirmation | Option-click New Action button |
Brushes panel
| Tool | Shortcut |
|---|---|
| Open Brush Options dialog box | Double-click brush |
| Duplicate brush | Drag brush to New Brush button |
Character and Paragraph panels
| Tool | Shortcut |
|---|---|
| Open the Character panel | Command + T |
| Open the Paragraph panel | Option + Command + T |
| Increase/decrease the selected value by a small increment | Up Arrow or Down Arrow |
| Increase/decreases the selected value by a large increment | Shift + Up Arrow or Down Arrow |
| Increase/decrease the selected value by a fraction | Command + Up or Down Arrow |
| Highlight the font name field in the Character panel | Command + Option + Shift + F |
Color panel
| Tool | Shortcut |
|---|---|
| Select the complement for the current color fill/stroke | Command-click color bar |
| Change the nonactive fill/stroke | Option-click color bar |
| Select the complement for the nonactive fill/stroke | Command + Option-click color bar |
| Select the inverse for the current fill/stroke | Command + Shift-click color bar |
| Select the inverse for the nonactive fill/stroke | Command + Shift + Option-click color bar |
| Open Color Guide | Shift + F3 |
| Change the color mode | Shift-click color bar |
| Move color sliders in tandem | Shift-drag color slider |
| Switch between percentage and 0-255 values for RGB | Double-click to right of a numerical field |
Gradient panel
| Tool | Shortcut |
|---|---|
| Duplicate color stops | Option-drag |
| Swap color stops | Option-drag color stop onto another stop |
| Apply swatch color to active (or selected) color stop | Option-click swatch in the Swatches panel |
| Reset the gradient fill to default black and white linear gradient | Command-click Gradient Fill box in the Gradient panel |
| Show/Hide gradient arrow | Command + Option + G |
| Modify angle and end-point together | Option-drag end point of gradient annotator |
| Constrain Gradient tool or Gradient annotator while dragging | Shift-drag |
| View Gradient annotator in selected gradient filled object | G |
Layers panel
| Tool | Shortcut |
|---|---|
| Add a layer | Command + L |
| Add a layer while opening the New Layer dialog box | Option + Command + L |
| Select all objects on the layer | Option-click layer name |
| Show/hide all layers but the selected one | Option-click eye icon |
| Select Outline/Preview view for the selected layer | Command-click eye icon |
| Selects Outline/Preview view for all other layers | Command + Option-click eye icon |
| Lock/unlock all other layers | Option-click lock icon |
| Expand all sublayers to display entire hierarchy | Option-click expansion triangle |
| Set options as you create new layer | Option-click New Layer button |
| Set options as you create new sublayer | Option-click New Sublayer button |
| Place new sublayer at bottom of layer list | Command + Option-click New Sublayer button |
| Place layer at top of layer list | Command-click New Layer button |
| Place layer below selected layer | Command + Option-click New Layer button |
| Copy the selection to a layer, sublayer, or group | Option-drag selection |
Swatches panel
| Tool | Shortcut |
|---|---|
| Create new spot color | Command-click New Swatch button |
| Create new global process color | Command + Shift-click New Swatch button |
| Replace swatch with another | Option-drag a swatch over another |
Transform panel
| Tool | Shortcut |
|---|---|
| Apply a value and keep focus in edit field | Shift + Return |
| Apply a value and copy object | Option + Return |
| Apply a value and scale option proportionately for width or height | Command + Return |
Transparency panel
| Tool | Shortcut |
|---|---|
| Apply last effect to the selected object | Shift + Command + E |
| Apply last effect to the selected object by adjusting the values in the effects dialog box | Option + Shift + Command +E |
| Change mask to grayscale image for editing | Option-click on mask thumbnail |
| Disable opacity mask | Shift-click on mask thumbnail |
| Re-enable opacity mask | Shift-click on disabled mask thumbnail |
| Increase/decrease opacity in 1% increments | Click opacity field + Up Arrow or Down Arrow |
| Increase/decrease opacity in 10% increments | Shift-click opacity field + Up Arrow or Down Arrow |
Function keys
| Tool | Shortcut |
|---|---|
| Invoke Help | |
| F1 | Cut |
| F2 | |
| Copy | F3 |
| Paste | F4 |
| Show/hide Brushes panel | F5 |
| Show/hide Color panel | F6 |
| Show/hide Layers panel | F7 |
| Create new symbol | F8 |
| Show/hide Info panel | Command + F8 |
| Show/hide Gradient panel | Command + F9 |
| Show/hide Stroke panel | Command + F10 |
| Show/hide Attributes panel | Command + F11 |
| Revert | F12 |
| Show/hide Graphic Styles panel | Shift + F5 |
| Show/hide Appearance panel | Shift + F6 |
| Show/hide Align panel | Shift + F7 |
| Show/hide Transform panel | Shift + F8 |
| Show/hide Pathfinder panel | Shift + Command + F9 |
| Show/hide Transparency panel | Shift + Command + F10 |
| Show/hide Symbols panel | Shift + Command + F11 |


{% extends 'base.html' %} {% block content%}
Police: {{hood.police}}
health: {{hood.health}}
{{post.post}}
{{post.date}}
Email: {{business.business_email}}


CTF Challenges!
This website contains many CTF challenges which you can attempt.
Each challenge contains one or more flags which must be found by analysing the files given, or breaching the website/database.
Links and flag count:
* Steganography: 7 flags
* SQL Injection: 7 flags
* Reflected XSS: 1 flag
* Networking: 4 flags
* Reverse Engineering: 4 flags
Github
Openlearning


| Package | com.whirled.contrib.card.graphics |
| Class | public class TrickSprite |
| Inheritance | TrickSprite CardArraySprite flash.display.Sprite |
| Subclasses | MainTrickSprite |
| Property | Defined by | ||
|---|---|---|---|
| _animations : Array | CardArraySprite | ||
| _cards : Array | CardArraySprite | ||
| _factory : CardSpriteFactory | CardArraySprite | ||
| _seating : Table | TrickSprite | ||
| _target : CardArray | CardArraySprite | ||
| _trick : Trick | TrickSprite | ||
| _winningCard : int = -1 | TrickSprite | ||
| winningCard : int Access the card that is currently winning, relative to the first card played this round.
| TrickSprite |
| Method | Defined by | ||
|---|---|---|---|
|
Create a new trick sprite
| TrickSprite |
| Method | Defined by | ||
|---|---|---|---|
|
animateAddition(card:CardSprite):void
Animates the addition of the card.
| CardArraySprite | ||
|
animateRemoval(card:CardSprite):void
Animates the removal of a card.
| CardArraySprite | ||
|
cardArrayListener(event:CardArrayEvent):void
When the card array changes, update our child sprites and re-layout.
| CardArraySprite | ||
|
getStaticCardPosition(index:int, pos:Point):void
Use the static proportional positions and the current trick leader to place the cards in
a cross, mimicking the player positions at the table.
| TrickSprite | ||
|
positionCards():void
Positions all cards (that are not currently animating).
| CardArraySprite | ||
|
refresh():void
Update our card sprites with the contents of the target card array.
| CardArraySprite | ||
|
trickListener(event:TrickEvent):void
| TrickSprite |
| Constant | Defined by | ||
|---|---|---|---|
| CARD_POSITIONS : Array [static]
| TrickSprite |
| _seating | property |
protected var _seating:Table
| _trick | property |
protected var _trick:Trick
| _winningCard | property |
protected var _winningCard:int = -1
| winningCard | property |
winningCard:int
[read-write]Access the card that is currently winning, relative to the first card played this round.
Implementation protected function get winningCard():int
protected function set winningCard(value:int):void
| TrickSprite | () | constructor |
public function TrickSprite(target:Trick, seating:Table, factory:CardSpriteFactory)
Create a new trick sprite
Parameterstarget:Trick |
|
seating:Table |
|
factory:CardSpriteFactory |
| getStaticCardPosition | () | method |
protected override function getStaticCardPosition(index:int, pos:Point):void
Use the static proportional positions and the current trick leader to place the cards in a cross, mimicking the player positions at the table.
Parametersindex:int |
|
pos:Point |
| trickListener | () | method |
| CARD_POSITIONS | constant |
protected static const CARD_POSITIONS:Array


[This readme is a partial copy of the sample's topic in the SDK documentation.]
This sample is a basic alarm clock, hosted in a native non-rectangular window.
To build the sample
Run MSBuild from the sample root directory or load the Alarm Clock solution in Visual Studio.
To run the sample
Create an "Alarm Clock" folder in the "My Documents" folder.
Copy all the files from the "Sample Files" folder into the "Alarm Clock" folder.
From the bin folder run "ConsoleHost.exe" in a console window.
From the alarmclock\app\bin\release folder, run AlarmClock.exe.
Demonstrates
The Alarm Clock sample demonstrates some applications of Windows® Presentation Foundation animation and opacity control.


QuickJS is a small and embeddable Javascript engine. It supports the ES2020 specification 1 including modules, asynchronous generators, proxies and BigInt.
It supports mathematical extensions such as big decimal float float numbers (BigDecimal), big binary floating point numbers (BigFloat), and operator overloading.
A Makefile is provided to compile the engine on Linux or MacOS/X. A preliminary Windows support is available thru cross compilation on a Linux host with the MingGW tools.
Edit the top of the Makefile
if you wish to select specific
options then run make
.
You can type make install
as root if you wish to install the binaries and support files to
/usr/local
(this is not necessary to use QuickJS).
qjs
is the command line interpreter (Read-Eval-Print Loop). You can pass
Javascript files and/or expressions as arguments to execute them:
./qjs examples/hello.js
qjsc
is the command line compiler:
./qjsc -o hello examples/hello.js ./hello
generates a hello
executable with no external dependency.
qjs
interpreterusage: qjs [options] [file [args]]
Options are:
-h
--help
List options.
-e EXPR
--eval EXPR
Evaluate EXPR.
-i
--interactive
Go to interactive mode (it is not the default when files are provided on the command line).
-m
--module
Load as ES6 module (default=autodetect). A module is autodetected if
the filename extension is .mjs
or if the first keyword of the
source is import
.
--script
Load as ES6 script (default=autodetect).
--bignum
Enable the bignum extensions: BigDecimal object, BigFloat object and
the "use math"
directive.
-I file
--include file
Include an additional file.
Advanced options are:
--std
Make the std
and os
modules available to the loaded
script even if it is not a module.
-d
--dump
Dump the memory usage stats.
-q
--quit
just instantiate the interpreter and quit.
qjsc
compilerusage: qjsc [options] [files]
Options are:
-c
Only output bytecode in a C file. The default is to output an executable file.
-e
Output main()
and bytecode in a C file. The default is to output an
executable file.
-o output
Set the output filename (default = out.c or a.out).
-N cname
Set the C name of the generated data.
-m
Compile as Javascript module (default=autodetect).
-D module_name
Compile a dynamically loaded module and its dependencies. This option
is needed when your code uses the import
keyword or the
os.Worker
constructor because the compiler cannot statically
find the name of the dynamically loaded modules.
-M module_name[,cname]
Add initialization code for an external C module. See the
c_module
example.
-x
Byte swapped output (only used for cross compilation).
-flto
Use link time optimization. The compilation is slower but the
executable is smaller and faster. This option is automatically set
when the -fno-x
options are used.
-fno-[eval|string-normalize|regexp|json|proxy|map|typedarray|promise|bigint]
Disable selected language features to produce a smaller executable file.
-fbignum
Enable the bignum extensions: BigDecimal object, BigFloat object and
the "use math"
directive.
qjscalc
applicationThe qjscalc
application is a superset of the qjs
command line interpreter implementing a Javascript calculator with
arbitrarily large integer and floating point numbers, fractions,
complex numbers, polynomials and matrices. The source code is in
qjscalc.js. More documentation and a web version are available at
http://numcalc.com.
Run make test
to run the few built-in tests included in the
QuickJS archive.
A test262 runner is included in the QuickJS archive. The test262 tests can be installed in the QuickJS source directory with:
git clone https://github.com/tc39/test262.git test262 cd test262 patch -p1 < ../tests/test262.patch cd ..
The patch adds the implementation specific harness
functions
and optimizes the inefficient RegExp character classes and Unicode
property escapes tests (the tests themselves are not modified, only a
slow string initialization function is optimized).
The tests can be run with
make test2
The configuration files test262.conf
(resp. test262o.conf
for the old ES5.1 tests4))
contain the options to run the various tests. Tests can be excluded
based on features or filename.
The file test262_errors.txt
contains the current list of
errors. The runner displays a message when a new error appears or when
an existing error is corrected or modified. Use the -u
option
to update the current list of errors (or make test2-update
).
The file test262_report.txt
contains the logs of all the
tests. It is useful to have a clearer analysis of a particular
error. In case of crash, the last line corresponds to the failing
test.
Use the syntax ./run-test262 -c test262.conf -f filename.js
to
run a single test. Use the syntax ./run-test262 -c test262.conf
N
to start testing at test number N
.
For more information, run ./run-test262
to see the command line
options of the test262 runner.
run-test262
accepts the -N
option to be invoked from
test262-harness
5
thru eshost
. Unless you want to compare QuickJS with other
engines under the same conditions, we do not recommend to run the
tests this way as it is much slower (typically half an hour instead of
about 100 seconds).
The ES2020 specification is almost fully supported including the Annex B (legacy web compatibility) and the Unicode related features.
The following features are not supported yet:
ECMA402 (Internationalization API) is not supported.
"use strip"
indicates that the debug information (including the source code of the functions) should not be retained to save memory. As "use strict"
, the directive can be global to a script or local to a function.
#!
is ignored.
The mathematical extensions are fully backward compatible with
standard Javascript. See jsbignum.pdf
for more information.
BigDecimal
support: arbitrary large floating point numbers in base 10.
BigFloat
support: arbitrary large floating point numbers in base 2.
"use bigint"
enables the bigint mode where integers are BigInt
by default.
"use math"
enables the math mode where the division and power operators on integers produce fractions. Floating point literals are BigFloat
by default and integers are BigInt
by default.
ES6 modules are fully supported. The default name resolution is the following:
.
or ..
are relative
to the current module path.
.
or ..
are system
modules, such as std
or os
.
.so
are native modules using the
QuickJS C API.
The standard library is included by default in the command line
interpreter. It contains the two modules std
and os
and
a few global objects.
scriptArgs
Provides the command line arguments. The first argument is the script name.
print(...args)
Print the arguments separated by spaces and a trailing newline.
console.log(...args)
Same as print().
std
moduleThe std
module provides wrappers to the libc stdlib.h
and stdio.h and a few other utilities.
Available exports:
exit(n)
Exit the process.
evalScript(str, options = undefined)
Evaluate the string str
as a script (global
eval). options
is an optional object containing the following
optional properties:
backtrace_barrier
Boolean (default = false). If true, error backtraces do not list the stack frames below the evalScript.
loadScript(filename)
Evaluate the file filename
as a script (global eval).
loadFile(filename)
Load the file filename
and return it as a string assuming UTF-8
encoding. Return null
in case of I/O error.
open(filename, flags, errorObj = undefined)
Open a file (wrapper to the libc fopen()
). Return the FILE
object or null
in case of I/O error. If errorObj
is not
undefined, set its errno
property to the error code or to 0 if
no error occured.
popen(command, flags, errorObj = undefined)
Open a process by creating a pipe (wrapper to the libc
popen()
). Return the FILE
object or null
in case of I/O error. If errorObj
is not
undefined, set its errno
property to the error code or to 0 if
no error occured.
fdopen(fd, flags, errorObj = undefined)
Open a file from a file handle (wrapper to the libc
fdopen()
). Return the FILE
object or null
in case of I/O error. If errorObj
is not
undefined, set its errno
property to the error code or to 0 if
no error occured.
tmpfile(errorObj = undefined)
Open a temporary file. Return the FILE
object or null
in case of I/O error. If errorObj
is not
undefined, set its errno
property to the error code or to 0 if
no error occured.
puts(str)
Equivalent to std.out.puts(str)
.
printf(fmt, ...args)
Equivalent to std.out.printf(fmt, ...args)
.
sprintf(fmt, ...args)
Equivalent to the libc sprintf().
in
out
err
Wrappers to the libc file stdin
, stdout
, stderr
.
SEEK_SET
SEEK_CUR
SEEK_END
Constants for seek().
Error
Enumeration object containing the integer value of common errors (additional error codes may be defined):
EINVAL
EIO
EACCES
EEXIST
ENOSPC
ENOSYS
EBUSY
ENOENT
EPERM
EPIPE
strerror(errno)
Return a string that describes the error errno
.
gc()
Manually invoke the cycle removal algorithm. The cycle removal algorithm is automatically started when needed, so this function is useful in case of specific memory constraints or for testing.
getenv(name)
Return the value of the environment variable name
or
undefined
if it is not defined.
setenv(name, value)
Set the value of the environment variable name
to the string
value
.
unsetenv(name)
Delete the environment variable name
.
getenviron()
Return an object containing the environment variables as key-value pairs.
urlGet(url, options = undefined)
Download url
using the curl command line
utility. options
is an optional object containing the following
optional properties:
binary
Boolean (default = false). If true, the response is an ArrayBuffer instead of a string. When a string is returned, the data is assumed to be UTF-8 encoded.
full
Boolean (default = false). If true, return the an object contains
the properties response
(response content),
responseHeaders
(headers separated by CRLF), status
(status code). response
is null
is case of protocol or
network error. If full
is false, only the response is
returned if the status is between 200 and 299. Otherwise null
is returned.
parseExtJSON(str)
Parse str
using a superset of JSON.parse
. The
following extensions are accepted:
\f
and \v
are accepted as space characters
0o
prefix) and hexadecimal (0x
prefix) numbers
FILE prototype:
close()
Close the file. Return 0 if OK or -errno
in case of I/O error.
puts(str)
Outputs the string with the UTF-8 encoding.
printf(fmt, ...args)
Formatted printf.
The same formats as the standard C library printf
are
supported. Integer format types (e.g. %d
) truncate the Numbers
or BigInts to 32 bits. Use the l
modifier (e.g. %ld
) to
truncate to 64 bits.
flush()
Flush the buffered file.
seek(offset, whence)
Seek to a give file position (whence is
std.SEEK_*
). offset
can be a number or a bigint. Return
0 if OK or -errno
in case of I/O error.
tell()
Return the current file position.
tello()
Return the current file position as a bigint.
eof()
Return true if end of file.
fileno()
Return the associated OS handle.
error()
Return true if there was an error.
clearerr()
Clear the error indication.
read(buffer, position, length)
Read length
bytes from the file to the ArrayBuffer buffer
at byte
position position
(wrapper to the libc fread
).
write(buffer, position, length)
Write length
bytes to the file from the ArrayBuffer buffer
at byte
position position
(wrapper to the libc fwrite
).
getline()
Return the next line from the file, assuming UTF-8 encoding, excluding the trailing line feed.
readAsString(max_size = undefined)
Read max_size
bytes from the file and return them as a string
assuming UTF-8 encoding. If max_size
is not present, the file
is read up its end.
getByte()
Return the next byte from the file. Return -1 if the end of file is reached.
putByte(c)
Write one byte to the file.
os
moduleThe os
module provides Operating System specific functions:
The OS functions usually return 0 if OK or an OS specific negative error code.
Available exports:
open(filename, flags, mode = 0o666)
Open a file. Return a handle or < 0 if error.
O_RDONLY
O_WRONLY
O_RDWR
O_APPEND
O_CREAT
O_EXCL
O_TRUNC
POSIX open flags.
O_TEXT
(Windows specific). Open the file in text mode. The default is binary mode.
close(fd)
Close the file handle fd
.
seek(fd, offset, whence)
Seek in the file. Use std.SEEK_*
for
whence
. offset
is either a number or a bigint. If
offset
is a bigint, a bigint is returned too.
read(fd, buffer, offset, length)
Read length
bytes from the file handle fd
to the
ArrayBuffer buffer
at byte position offset
.
Return the number of read bytes or < 0 if error.
write(fd, buffer, offset, length)
Write length
bytes to the file handle fd
from the
ArrayBuffer buffer
at byte position offset
.
Return the number of written bytes or < 0 if error.
isatty(fd)
Return true
is fd
is a TTY (terminal) handle.
ttyGetWinSize(fd)
Return the TTY size as [width, height]
or null
if not available.
ttySetRaw(fd)
Set the TTY in raw mode.
remove(filename)
Remove a file. Return 0 if OK or -errno
.
rename(oldname, newname)
Rename a file. Return 0 if OK or -errno
.
realpath(path)
Return [str, err]
where str
is the canonicalized absolute
pathname of path
and err
the error code.
getcwd()
Return [str, err]
where str
is the current working directory
and err
the error code.
chdir(path)
Change the current directory. Return 0 if OK or -errno
.
mkdir(path, mode = 0o777)
Create a directory at path
. Return 0 if OK or -errno
.
stat(path)
lstat(path)
Return [obj, err]
where obj
is an object containing the
file status of path
. err
is the error code. The
following fields are defined in obj
: dev, ino, mode, nlink,
uid, gid, rdev, size, blocks, atime, mtime, ctime. The times are
specified in milliseconds since 1970. lstat()
is the same as
stat()
excepts that it returns information about the link
itself.
S_IFMT
S_IFIFO
S_IFCHR
S_IFDIR
S_IFBLK
S_IFREG
S_IFSOCK
S_IFLNK
S_ISGID
S_ISUID
Constants to interpret the mode
property returned by
stat()
. They have the same value as in the C system header
sys/stat.h.
utimes(path, atime, mtime)
Change the access and modification times of the file path
. The
times are specified in milliseconds since 1970. Return 0 if OK or -errno
.
symlink(target, linkpath)
Create a link at linkpath
containing the string target
. Return 0 if OK or -errno
.
readlink(path)
Return [str, err]
where str
is the link target and err
the error code.
readdir(path)
Return [array, err]
where array
is an array of strings
containing the filenames of the directory path
. err
is
the error code.
setReadHandler(fd, func)
Add a read handler to the file handle fd
. func
is called
each time there is data pending for fd
. A single read handler
per file handle is supported. Use func = null
to remove the
handler.
setWriteHandler(fd, func)
Add a write handler to the file handle fd
. func
is
called each time data can be written to fd
. A single write
handler per file handle is supported. Use func = null
to remove
the handler.
signal(signal, func)
Call the function func
when the signal signal
happens. Only a single handler per signal number is supported. Use
null
to set the default handler or undefined
to ignore
the signal. Signal handlers can only be defined in the main thread.
SIGINT
SIGABRT
SIGFPE
SIGILL
SIGSEGV
SIGTERM
POSIX signal numbers.
kill(pid, sig)
Send the signal sig
to the process pid
.
exec(args[, options])
Execute a process with the arguments args
. options
is an
object containing optional parameters:
block
Boolean (default = true). If true, wait until the process is
terminated. In this case, exec
return the exit code if positive
or the negated signal number if the process was interrupted by a
signal. If false, do not block and return the process id of the child.
usePath
Boolean (default = true). If true, the file is searched in the
PATH
environment variable.
file
String (default = args[0]
). Set the file to be executed.
cwd
String. If present, set the working directory of the new process.
stdin
stdout
stderr
If present, set the handle in the child for stdin, stdout or stderr.
env
Object. If present, set the process environment from the object key-value pairs. Otherwise use the same environment as the current process.
uid
Integer. If present, the process uid with setuid
.
gid
Integer. If present, the process gid with setgid
.
waitpid(pid, options)
waitpid
Unix system call. Return the array [ret,
status]
. ret
contains -errno
in case of error.
WNOHANG
Constant for the options
argument of waitpid
.
dup(fd)
dup
Unix system call.
dup2(oldfd, newfd)
dup2
Unix system call.
pipe()
pipe
Unix system call. Return two handles as [read_fd,
write_fd]
or null in case of error.
sleep(delay_ms)
Sleep during delay_ms
milliseconds.
setTimeout(func, delay)
Call the function func
after delay
ms. Return a handle
to the timer.
clearTimeout(handle)
Cancel a timer.
platform
Return a string representing the platform: "linux"
, "darwin"
,
"win32"
or "js"
.
Worker(module_filename)
Constructor to create a new thread (worker) with an API close to the
WebWorkers
. module_filename
is a string specifying the
module filename which is executed in the newly created thread. As for
dynamically imported module, it is relative to the current script or
module path. Threads normally don’t share any data and communicate
between each other with messages. Nested workers are not supported. An
example is available in tests/test_worker.js.
The worker class has the following static properties:
parent
In the created worker, Worker.parent
represents the parent
worker and is used to send or receive messages.
The worker instances have the following properties:
postMessage(msg)
Send a message to the corresponding worker. msg
is cloned in
the destination worker using an algorithm similar to the HTML
structured clone algorithm. SharedArrayBuffer
are shared
between workers.
Current limitations: Map
and Set
are not supported
yet.
onmessage
Getter and setter. Set a function which is called each time a
message is received. The function is called with a single
argument. It is an object with a data
property containing the
received message. The thread is not terminated if there is at least
one non null
onmessage
handler.
The C API was designed to be simple and efficient. The C API is
defined in the header quickjs.h
.
JSRuntime
represents a Javascript runtime corresponding to an
object heap. Several runtimes can exist at the same time but they
cannot exchange objects. Inside a given runtime, no multi-threading is
supported.
JSContext
represents a Javascript context (or Realm). Each
JSContext has its own global objects and system objects. There can be
several JSContexts per JSRuntime and they can share objects, similar
to frames of the same origin sharing Javascript objects in a
web browser.
JSValue
represents a Javascript value which can be a primitive
type or an object. Reference counting is used, so it is important to
explicitly duplicate (JS_DupValue()
, increment the reference
count) or free (JS_FreeValue()
, decrement the reference count)
JSValues.
C functions can be created with
JS_NewCFunction()
. JS_SetPropertyFunctionList()
is a
shortcut to easily add functions, setters and getters properties to a
given object.
Unlike other embedded Javascript engines, there is no implicit stack,
so C functions get their parameters as normal C parameters. As a
general rule, C functions take constant JSValue
s as parameters
(so they don’t need to free them) and return a newly allocated (=live)
JSValue
.
Exceptions: most C functions can return a Javascript exception. It
must be explicitly tested and handled by the C code. The specific
JSValue
JS_EXCEPTION
indicates that an exception
occurred. The actual exception object is stored in the
JSContext
and can be retrieved with JS_GetException()
.
Use JS_Eval()
to evaluate a script or module source.
If the script or module was compiled to bytecode with qjsc
, it
can be evaluated by calling js_std_eval_binary()
. The advantage
is that no compilation is needed so it is faster and smaller because
the compiler can be removed from the executable if no eval
is
required.
Note: the bytecode format is linked to a given QuickJS
version. Moreover, no security check is done before its
execution. Hence the bytecode should not be loaded from untrusted
sources. That’s why there is no option to output the bytecode to a
binary file in qjsc
.
C opaque data can be attached to a Javascript object. The type of the
C opaque data is determined with the class ID (JSClassID
) of
the object. Hence the first step is to register a new class ID and JS
class (JS_NewClassID()
, JS_NewClass()
). Then you can
create objects of this class with JS_NewObjectClass()
and get or
set the C opaque point with
JS_GetOpaque()
/JS_SetOpaque()
.
When defining a new JS class, it is possible to declare a finalizer
which is called when the object is destroyed. The finalizer should be
used to release C resources. It is invalid to execute JS code from
it. A gc_mark
method can be provided so that the cycle removal
algorithm can find the other objects referenced by this object. Other
methods are available to define exotic object behaviors.
The Class ID are globally allocated (i.e. for all runtimes). The
JSClass are allocated per JSRuntime
. JS_SetClassProto()
is used to define a prototype for a given class in a given
JSContext. JS_NewObjectClass()
sets this prototype in the
created object.
Examples are available in quickjs-libc.c.
Native ES6 modules are supported and can be dynamically or statically linked. Look at the test_bjson and bjson.so examples. The standard library quickjs-libc.c is also a good example of a native module.
Use JS_SetMemoryLimit()
to set a global memory allocation limit
to a given JSRuntime.
Custom memory allocation functions can be provided with
JS_NewRuntime2()
.
The maximum system stack size can be set with JS_SetMaxStackSize()
.
Use JS_SetInterruptHandler()
to set a callback which is
regularly called by the engine when it is executing code. This
callback can be used to implement an execution timeout.
It is used by the command line interpreter to implement a
Ctrl-C
handler.
The compiler generates bytecode directly with no intermediate representation such as a parse tree, hence it is very fast. Several optimizations passes are done over the generated bytecode.
A stack-based bytecode was chosen because it is simple and generates compact code.
For each function, the maximum stack size is computed at compile time so that no runtime stack overflow tests are needed.
A separate compressed line number table is maintained for the debug information.
Access to closure variables is optimized and is almost as fast as local variables.
Direct eval
in strict mode is optimized.
qjsc
compilerThe qjsc
compiler generates C sources from Javascript files. By
default the C sources are compiled with the system compiler
(gcc
or clang
).
The generated C source contains the bytecode of the compiled functions
or modules. If a full complete executable is needed, it also
contains a main()
function with the necessary C code to initialize the
Javascript engine and to load and execute the compiled functions and
modules.
Javascript code can be mixed with C modules.
In order to have smaller executables, specific Javascript features can
be disabled, in particular eval
or the regular expressions. The
code removal relies on the Link Time Optimization of the system
compiler.
qjsc
works by compiling scripts or modules and then serializing
them to a binary format. A subset of this format (without functions or
modules) can be used as binary JSON. The example test_bjson.js
shows how to use it.
Warning: the binary JSON format may change without notice, so it should not be used to store persistent data. The test_bjson.js example is only used to test the binary object format functions.
Strings are stored either as an 8 bit or a 16 bit array of characters. Hence random access to characters is always fast.
The C API provides functions to convert Javascript Strings to C UTF-8 encoded strings. The most common case where the Javascript string contains only ASCII characters involves no copying.
The object shapes (object prototype, property names and flags) are shared between objects to save memory.
Arrays with no holes (except at the end of the array) are optimized.
TypedArray accesses are optimized.
Object property names and some strings are stored as Atoms (unique strings) to save memory and allow fast comparison. Atoms are represented as a 32 bit integer. Half of the atom range is reserved for immediate integer literals from 0 to 2^{31}-1.
Numbers are represented either as 32-bit signed integers or 64-bit IEEE-754 floating point values. Most operations have fast paths for the 32-bit integer case.
Reference counting is used to free objects automatically and deterministically. A separate cycle removal pass is done when the allocated memory becomes too large. The cycle removal algorithm only uses the reference counts and the object content, so no explicit garbage collection roots need to be manipulated in the C code.
It is a Javascript value which can be a primitive type (such as Number, String, ...) or an Object. NaN boxing is used in the 32-bit version to store 64-bit floating point numbers. The representation is optimized so that 32-bit integers and reference counted values can be efficiently tested.
In 64-bit code, JSValue are 128-bit large and no NaN boxing is used. The rationale is that in 64-bit code memory usage is less critical.
In both cases (32 or 64 bits), JSValue exactly fits two CPU registers, so it can be efficiently returned by C functions.
The engine is optimized so that function calls are fast. The system stack holds the Javascript parameters and local variables.
A specific regular expression engine was developed. It is both small and efficient and supports all the ES2020 features including the Unicode properties. As the Javascript compiler, it directly generates bytecode without a parse tree.
Backtracking with an explicit stack is used so that there is no recursion on the system stack. Simple quantifiers are specifically optimized to avoid recursions.
Infinite recursions coming from quantifiers with empty terms are avoided.
The full regexp library weights about 15 KiB (x86 code), excluding the Unicode library.
A specific Unicode library was developed so that there is no dependency on an external large Unicode library such as ICU. All the Unicode tables are compressed while keeping a reasonable access speed.
The library supports case conversion, Unicode normalization, Unicode script queries, Unicode general category queries and all Unicode binary properties.
The full Unicode library weights about 45 KiB (x86 code).
BigInt, BigFloat and BigDecimal are implemented with the libbf
library7. It weights about 90
KiB (x86 code) and provides arbitrary precision IEEE 754 floating
point operations and transcendental functions with exact rounding.
QuickJS is released under the MIT license.
Unless otherwise specified, the QuickJS sources are copyright Fabrice Bellard and Charlie Gordon.
https://github.com/tc39/test262
https://tc39.github.io/ecma262/
The old
ES5.1 tests can be extracted with git clone --single-branch
--branch es5-tests https://github.com/tc39/test262.git test262o
https://github.com/bterlson/test262-harness
We believe the current specification of tails calls is too complicated and presents limited practical interests.


SAVING PRIVATE RYAN (1998)
Rating: 4 stars (out of 4.0) ******************************** Key to rating system: 2.0 stars - Debatable 2.5 stars - Some people may like it 3.0 stars - I liked it 3.5 stars - I am biased in favor of the movie 4.0 stars - I felt the movie's impact personally or it stood out ********************************* A Movie Review by David Sunga
Directed by: Steven Spielberg
Written by: Robert Rodat
Starring: Tom Hanks, Tom Sizemore, Edward Burns, Jeremy Davies, Matt Damon
Ingredients: Philosophy, World War II, humans trapped in carnage, rescue mission, cowering, crying, killing
Synopsis: At the bottom of Nature's food chain, population in prey animals is kept in check by predators. But among the top creatures there are no higher predators. Often the top creatures themselves - - whether they be lions or wolves or primitive humans - - keep their numbers low mainly through vicious regionalism and territorial resource competition, using crude weapons such as teeth and claws, or spears and arrows. The setting of SAVING PRIVATE RYAN is World War II, an era in history when Germany's (and Japan's) "Manifest Destiny" included resource expansion and racial exclusion on an immense scale involving advanced 20th century weaponry and populations of millions, resulting in continuous, gruesome carnage and psychological denial.
Among the countries resisting Germany and Japan was the United States, at that time an economic heavyweight and regional power, but militarily inadequate compared to the great powers. For example, Japan had the world's most powerful and technologically advanced navy at the time of Pearl Harbor. As a result of the United States' relative inexperience, a situation occurred where ordinary American men such as kindly schoolteachers and terrified, fresh-faced kids (today some would be below the legal drinking age) found themselves responsible for penetrating hostile territory to battle killing machines in an attempt to stem the tide of Nazi expansion. Many combatants made the ultimate sacrifice, dying like flies in a hailstorm.
In SAVING PRIVATE RYAN Captain John Miller (Tom Hanks) is not a professional soldier; he is more likely to read Emerson than to pack a machine gun. But because it is wartime, Miller and a small squad of men are unfortunately given an unwise suicidal mission behind enemy lines to locate a lost but relatively unimportant soldier named Private James Ryan (Matt Damon) and return Ryan to safety. Although the men question and resist their mission, they eventually decide it is the only way they'll ever be allowed to return home from the War, and so they courageously do their duty. Finding and rescuing Ryan becomes a kind of Holy Grail, symbolizing the desire of every man to protect innocent, ordinary life from the brutality of war, even if the heroes themselves risk being consumed, body and personality, by warfare.
Opinion: You can always tell a four-star movie because when the audience comes out of the theater after seeing it, they look a little dazed, as if in their minds some part of the movie is still playing. SAVING PRIVATE RYAN is one such movie.
Most of us live pleasant lives of convenience, unmindful of gritty, value-laden, life -and-death decisions that others have to make. We go down to the grocery store refrigerator and select meat for our consumption, our minds far removed from the physical act of having to butcher the food ourselves. From plush, comfortable couches some of us can push buttons that enable long range bombs to fly far away, and go down the chimney to incinerate a cartoonish villain, or demolish an electrical power plant in a rogue state. Or we may clap our hands when we see it on TV. Like watching a video game.
But the exact same executions would have an entirely different effect on us if we had to do them face to face.  What if we had to live in the same building with civilian families dying from lack of water, and eating rotten, non-refrigerated, food as a result of the local electrical power plant being bombed? Or suppose we were responsible for deciding from among our friends and family, which member must die in a hail of gunfire in order to take out an enemy station. In that case things wouldn't be so easy. Life would take on a gritty texture. We'd be forced to clarify our values, who we are, and what we stand for.
SAVING PRIVATE RYAN explores this idea. Ordinary men are sent into a situation of utter carnage - - not to swagger and easily save the universe as per usual summer blockbuster - - but so that the film may allow us to vicariously examine how Joe Everyman might feel in a FUBAR situation such as the war our grandfathers faced half a century ago, a war which we may yet fight again, if vigilance falters and human inattention allows history to repeat itself.
Behind the scenes, somebody, somewhere is responsible for slaughtering the food animal; somebody does engage the enemy; somebody does make courageous, forgotten sacrifices in defense and nurturance of the common good. The "dirty work" happens in history and every day behind the sanitized curtains of our convenience in order to make possible our pampered and privileged lifestyles. Accustomed to free entertainment, facilities, and civil liberties, we only rarely ponder - - as the characters do in SAVING PRIVATE RYAN - - the politically incorrect and often disturbing concept of sacrifice.
While watching the movie inside the theater I noticed a father consoling a teenage boy who had covered his face with his shirt because he could not stomach the frightening, gut-wrenching visual detail of the war scenes (bleached colors and on-foot camerawork along with periods of deafness and slow motion make the audience feel as if it is partaking in the mayhem). It is a tribute to Spielberg, his cast, and crew that SAVING PRIVATE RYAN successfully captures the realism and emotion of war.
SAVING PRIVATE RYAN is a classic that is easily as good if not better than the best previous movies of Tom Hanks or Steven Spielberg.
Reviewed July 25, 1998
Copyright © 1998 by David Sunga This review and others like it can be found at THE CRITIC ZOO: http://www.criticzoo.com email<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


The people not only aware the information but also invlolve in the development process for their peaceful and better life style
Prerna Rural development society (PRDS) is an organization registered under the Societies Registration Act 1860, working in development field from 2006. We have been provided skills training to rural girls and women for better livelihood. We did many projects from support of state government and central government. We have very good rapport with district administration.
We are very thankful to our community, volunteers and management, who always involved in the grass root level in the development of rural and urban areas of Jharkhand. Our official members and grass root level volunteers are working very hard to give a new shape of the project area on all socio-economic and other social parameters.
Inauguration by Yashwant Sinha (then M.P. of Hazaribagh)
The organisation organised free cataract surgery camp for the poor people. We arranged the doctors, medicines, test kits, lenses, etc to be used in the camp. We also provided free food and accommodation to the patients and their attendees.
Training to adolescent girls
Multidimensional Challenges of ensuring the holistic development of adolescent girls in the age group of 11-18 years by focusing on the quality of their nutrition and health status, providing them life skills, kausal-vikas, health nutrition and vocational training to provide them sustainable livelihood alternatives.
Women working on semi-automatic manufacturing machines
In a attempt to empower the women, a free training camp for production of inscense sticks was provided to women of 20 Self-help-groups (SHG). They were also helped to start gaining financial aid by the means of these skills. This made the women of the area self-dependent and confident.
Bags and T-shirt distribution to disabled children
Under the Right to Education, all the children of age group 6-14 years are entitiled to be educated. In order to give the disabled children, who drop out from schools, their rights, a training was provided to SMC and resource teachers.
Rural women participating in the training
Under NSCFDC, Govt. of India guidlines, a vocational training camp for the ST/SC women in the rural areas of Jharkhand was organised. We successfully trained 120 women for casting-operator. The women learned to make sculptures and practice Dokra Art.
Tree plantation drive
Rising deforestation is causing the condition on environment to deteriorate. This issue can only be dealt with increasing awareness among the people about the direct impact of our actions on the environment. Together we planted several trees around schools and community halls.
At - Harli , P.S. – Barkagaon,Dist.- Hazaribag Pin – 825311, Jharkhand.
At- Yashwant Nagar, Road no. -3 , Behind Hanuman Mandir, Barkagaon Road, Hazaribagh (825301), Jharkhand
8709039431,<PHONE_NUMBER>


{% include head.html %}
{% include nav.html %} {% include lead.html %} {% include about.html %} {% include experience.html %} {% include education.html %} {% include skills.html %} {% include projects.html%} {% include contact.html %} {% include footer.html %}


Steph McGovern announces baby news saying they are all ‘fine and dandy'
Steph McGovern has announced the birth of her daughter saying the new addition arrived “just as BBC Breakfast was wrapping up”.
The former BBC presenter tweeted her good news, writing: “Well hello world, just surfaced to let you know that we now have a daughter!
“Born on Monday morning just as @BBCBreakfast was wrapping up. We’re all fine and dandy. Just getting used to the eau de sick/poo I am now regularly wearing”.
She finished off the post using the hashtag babylife followed by a heart and family emoji.
It is McGovern’s first child with her girlfriend, whose identity is not known.
Her former BBC colleague Mike Bushell was among the people congratulating her.
He tweeted: “Wow wow. This is the most amazing news. Huge love and congratulations and bet she’s just gorgeous. Hope all going well and you’re getting the odd bit of sleep. Baby joy”.
Dragons’ Den star Theo Paphitis tweeted: “Congratulations Steph & a big welcome to your new addition!”.
Her football club, Middlesbrough FC also joined in the congratulations with a tweet.
In July she tweeted to announce her baby news, saying that she was “no longer with pot belly…… I am now with child”.
She also recently announced she was leaving the BBC after landing a new daily live show on Channel 4.
Titled The Steph Show, it will be broadcast from Channel 4’s new national headquarters in Leeds.
The show has been billed as being a mix of light current affairs, entertainment and lifestyle and will see McGovern interview figures from showbiz, politics and other genres.


Auxilliary Tool:
A tool for evaluating the performance of a whole-image-object-detector, such as a GentleBoostCascadedClassifier, for performance on an ImageDataSet.
More...
#include <DetectionEvaluator2.h>
List of all members.
Public Member Functions |
|
| DetectionEvaluator2 () |
| | Default Constructor.
|
|
| DetectionEvaluator2 (const DetectionEvaluator2 ©) |
| | Copy Constructor.
|
|
DetectionEvaluator2 & | operator= (const DetectionEvaluator2 &rhs) |
| | Assignment operator.
|
| | DetectionEvaluator2 (const ImageDataSet2 &imageDataSet) |
| | Constructor.
|
| | DetectionEvaluator2 (const std::string &fileListFile, const std::string &labelFile) |
| | Constructor.
|
|
| ~DetectionEvaluator2 () |
| | Destructor.
|
| void | setDataSet (const ImageDataSet2 &imageDataSet) |
| | Set data source.
|
| void | setDataSet (const std::string &fileListFile, const std::string &labelFile) |
| | Set data source.
|
| std::vector< std::string > | getFileNames () const |
| | Get the names of the images used for evaluation. In contrast to the ImageDataSet format, these names are unique.
|
std::vector< std::vector
< cv::Rect > > | getTargetLocations () const |
| | Get the location of the images used for evaluation. There can be several in each image; there is one vector per file name, and possibly several elements per vector.
|
| EvaluationMetrics | evaluateImagePerformanceWithThreshold (int imNum, std::vector< SearchResult > boxes, double threshold) const |
| | Evaluate the number of hits, misses, and false alarms on a given image with a given threshold. The object detector output must be supplied in the form of a vector of SearchResults.
|
| std::vector< EvaluationMetrics > | evaluateImagePerformance (int imNum, const std::vector< SearchResult > &boxes) const |
| | Evaluate the number of hits, misses, and false alarms on a given image across a range of thresholds. The object detector output must be supplied in the form of a vector of SearchResults.
|
| std::vector< EvaluationMetrics > | evaluatePerformance (const std::vector< std::vector< SearchResult > > &imBoxes) const |
| | Evaluate the number of hits, misses, and false alarms on all dataset images across a range of thresholds. The object detector output must be supplied in the form of a vector of SearchResults vectors, one per image.
|
| std::string | outputOpenCVDescriptionFormatForHaarTraining () const |
| | Get the "Description Format" used by OpenCV for Haar Training.
|
| size_t | dataSetSize () const |
| int | empty () const |
Static Public Attributes |
| static double | acceptArea = .5 |
| | Match parameter: defines the overlap requirement between detected objects and known dataset objects. Should be (0-1].
|
Detailed Description
Auxilliary Tool:
A tool for evaluating the performance of a whole-image-object-detector, such as a GentleBoostCascadedClassifier, for performance on an ImageDataSet.
Specifically, the evaluation method is fashioned after the "miss-rate as
a function of false positives per image" introduced by Dollar et al. in P. Dollar, C. Wojek, B. Schiele, and P. Perona. Pedestrian detection: A benchmark. In CVPR, June 2009.
- Author:
- Nicholas Butko
- Date:
- 2010
- Version:
- 0.4
Constructor & Destructor Documentation
| DetectionEvaluator2::DetectionEvaluator2 |
( |
const ImageDataSet2 & |
imageDataSet ) |
|
Constructor.
- Parameters:
-
| imageDataSet | The labeled images that we want to use to evaluate for object detector performance. |
| DetectionEvaluator2::DetectionEvaluator2 |
( |
const std::string & |
fileListFile, |
|
|
const std::string & |
labelFile |
|
) |
| |
Constructor.
- Parameters:
-
| fileListFile | Path to a file containing file names of images in the dataset. One file name corresponds to the location of one object, so the same filename may be listed multiple times. |
| labelFile | Path to a file containing object locations in the images listed in fileListFile. Each line is a triple containing object center x, object center y, and object width/height. This is the same format used by ImageDataSet. |
Member Function Documentation
| size_t DetectionEvaluator2::dataSetSize |
( |
) |
const |
Get the number of images in the dataset.
| int DetectionEvaluator2::empty |
( |
) |
const |
Check whether a valid dataset has been loaded.
Evaluate the number of hits, misses, and false alarms on a given image across a range of thresholds. The object detector output must be supplied in the form of a vector of SearchResults.
- Parameters:
-
- Returns:
- Performance on a single image for a range of thresholds, in terms of hits, misses, and false_alarms.
| EvaluationMetrics DetectionEvaluator2::evaluateImagePerformanceWithThreshold |
( |
int |
imNum, |
|
|
std::vector< SearchResult > |
boxes, |
|
|
double |
threshold |
|
) |
| const |
Evaluate the number of hits, misses, and false alarms on a given image with a given threshold. The object detector output must be supplied in the form of a vector of SearchResults.
- Parameters:
-
- Returns:
- Performance on a single image for a given threshold, in terms of hits, misses, and false_alarms.
Evaluate the number of hits, misses, and false alarms on all dataset images across a range of thresholds. The object detector output must be supplied in the form of a vector of SearchResults vectors, one per image.
- Parameters:
-
- Returns:
- Performance on all images for a range of thresholds, in terms of hits, misses, and false_alarms.
| vector< string > DetectionEvaluator2::getFileNames |
( |
) |
const |
Get the names of the images used for evaluation. In contrast to the ImageDataSet format, these names are unique.
- Returns:
- A list of file names containing images in the dataset, one entry per image.
| vector< vector< Rect > > DetectionEvaluator2::getTargetLocations |
( |
) |
const |
Get the location of the images used for evaluation. There can be several in each image; there is one vector per file name, and possibly several elements per vector.
- Returns:
- A list of target location lists.
| string DetectionEvaluator2::outputOpenCVDescriptionFormatForHaarTraining |
( |
) |
const |
Get the "Description Format" used by OpenCV for Haar Training.
This is useful for converting between an ImageDataset and OpenCV's format which is more closely mirrored by DetectionEvaluator's internal data structures.
- Returns:
- A string, suitable for writing to a file, that can be used to specify the data needed to train an OpenCV Haar Cascade.
| void DetectionEvaluator2::setDataSet |
( |
const ImageDataSet2 & |
imageDataSet ) |
|
Set data source.
- Parameters:
-
| imageDataSet | The labeled images that we want to use to evaluate for object detector performance. |
| void DetectionEvaluator2::setDataSet |
( |
const std::string & |
fileListFile, |
|
|
const std::string & |
labelFile |
|
) |
| |
Set data source.
- Parameters:
-
| fileListFile | Path to a file containing file names of images in the dataset. One file name corresponds to the location of one object, so the same filename may be listed multiple times. |
| labelFile | Path to a file containing object locations in the images listed in fileListFile. Each line is a triple containing object center x, object center y, and object width/height. This is the same format used by ImageDataSet. |
Member Data Documentation
Match parameter: defines the overlap requirement between detected objects and known dataset objects. Should be (0-1].
Specifically, a "hit" is recorded if the area union of a reported bounding box and a dataset object bounding box is acceptArea * intersection. 1 means the overlap must be perfect. The default value, .5, means the union must be at least half of the intersection.
The documentation for this class was generated from the following files:
- /Users/nick/projects/NickThesis/Code/OpenCV/src/DetectionEvaluator2.h
- /Users/nick/projects/NickThesis/Code/OpenCV/src/DetectionEvaluator2.cpp


Dashboard
Articles
Create New Articles
New Articles
Scheduled Articles
Published Article
My Drafts
Feature Box Management
Campaign Management
Add A Magazine Issue
Tips
Reports
Help
Tips & Quotes
Tips
Tags
Quotes
Reports
Help
Debate
Published Debate
Create New Debates
Debate Comments
Profanity Filter
Reports
Help
Columnist and Guest Author
Add/Edit Columnist
Add New Guest Author
Reports
Help
Events
Add New Events
Published Events
Deleted Events
Reports
Help
Quick Bytes
Create New Quick Byte
Published Quick Bytes
Deleted Quick Bytes
Reports
Help
Sponsored Post
Create New Sponsored Post
Published Sponsored Posts
Deleted Sponsored Posts
Reports
Help
Photos
Upload New Album
Published Album
Deleted Photos
Reports
Help
Videos
Upload New Video
Published Videos
Deleted Videos
Featured Videos
Reports
Help
Site Management
Category Master
Location Master
Topic Master
Tags Master
Rights Management
CMS Rights
Reports
Help
Help
FAQ
Sitemap
Logout
Create New Sponsored Post
Create New Sponsored Post
Sponsored Post: 45345
BW
Notifications
×
This is Success Notification
Your data has been successfully modified.
×
This is Alert Notification
No result found.
×
This is Error Notification
Please select a valid search criteria.
×
This is Error Notification
Please enter a valid email id.
Channel
Channel
Channel1
Channel2
Channel3
Article Details
Title (200 Characters)
Summary (800 Characters)
Description
Categories
Categories
All
Beige
Black
Blue
Bronze
Brown
Gold
Gray
Green
Orange
Pink
Purple
Red
Silver
Turquoise
White
Yellow
All
Beige
Black
Blue
Bronze
Brown
Gold
Gray
Green
Orange
Pink
Purple
Red
Silver
Turquoise
White
Yellow
All
Beige
Black
Blue
Bronze
Brown
Gold
Gray
Green
Orange
Pink
Purple
Red
Silver
Turquoise
White
Yellow
All
Beige
Black
Blue
Bronze
Brown
Gold
Gray
Green
Orange
Pink
Purple
Red
Silver
Turquoise
White
Yellow
Assign This Article To An Event
Event Name
All
Beige
Black
Blue
Bronze
Brown
Gold
Gray
Green
Orange
Pink
Purple
Red
Silver
Turquoise
White
Yellow
Photos & Videos
Upload Image
Image 1
Image 2
Image 3
Image 4
Video
Current Photos
Title
Code (500/320)
Source
URL
Submit
Image
Title
Source
Source URL
Action
Celebrate 'Dry Holi' to save water for future
JPEG image
PTI
Dump
Celebrate 'Dry Holi' to save water for future
JPEG image
PTI
Dump
Celebrate 'Dry Holi' to save water for future
JPEG image
PTI
Dump
Celebrate 'Dry Holi' to save water for future
JPEG image
PTI
Dump
Celebrate 'Dry Holi' to save water for future
JPEG image
PTI
Dump
Upload Image 1
Upload Image
Browse
Change
Remove
Title 1
Description 1
Source Name
Source URL
Submit
Upload Image 2
Upload Image
Browse
Change
Remove
Title 2
Description 2
Source Name
Source URL
Submit
Upload Image 3
Upload Image
Browse
Change
Remove
Title 3
Description 3
Source Name
Source URL
Submit
Upload Image 4
Upload Image
Browse
Change
Remove
Title 4
Description 4
Source Name
Source URL
Submit
Feature This
Publish
Dump


NZ has an image of a clean, green country with friendly people who are generally quiet relaxed and nonchalant.
I like the stunning beauty, fresh air, general friendliness and helpfullness of Kiwis, good service almost everywhere, and was initially fascinated with the 1 day-4 season weather. Honesty and trust are usually the attitudes of most Kiwis, in general and are willing to help friends and strangers alike who are in difficulty.
My observations for poeple considering moving to Auckland is to be prepared to work hard to get a job (not an exception if you have tons of experience), accept rejection and move on. Try to get some NZ experience through volunteering, study etc.
There is so much to see in NZ, and every bit is definitely worth it because the scenery here is amazing!! There are many activities to do in the weekend if you like being active or if you're an outdoors person - they can often be free.


pragma solidity ^0.4.18;
import "./SafeMath.sol";
contract Owned {
event OwnerAddition(address indexed owner);
event OwnerRemoval(address indexed owner);
// owner address to enable admin functions
mapping (address => bool) public isOwner;
address[] public owners;
address public operator;
modifier onlyOwner {
require(isOwner[msg.sender]);
_;
}
modifier onlyOperator {
require(msg.sender == operator);
_;
}
function setOperator(address _operator) external onlyOwner {
Erequire(_operator != address(0));
operator = _operator;
}
function removeOwner(address _owner) public onlyOwner {
require(owners.length > 1);
isOwner[_owner] = false;
for (uint i = 0; i < owners.length - 1; i++) {
if (owners[i] == _owner) {
owners[i] = owners[SafeMath.sub(owners.length, 1)];
break;
}
}
owners.length = SafeMath.sub(owners.length, 1);
OwnerRemoval(_owner);
}
function addOwner(address _owner) external onlyOwner {
Erequire(_owner != address(0));
Iif(isOwner[_owner]) return;
isOwner[_owner] = true;
owners.push(_owner);
OwnerAddition(_owner);
}
function setOwners(address[] _owners) internal {
for (uint i = 0; i < _owners.length; i++) {
Erequire(_owners[i] != address(0));
isOwner[_owners[i]] = true;
OwnerAddition(_owners[i]);
}
owners = _owners;
}
function getOwners() public constant returns (address[]) {
return owners;
}
}
|


Battleship.io is a game host project powered by socket.io and node.js. This is a simple GUI example written in Backbone.js
For more detail, please visit github.


|
Panda3D
|
Internal class used for handling lights and shadows. More...
Public Member Functions | |
| __init__ () | |
| Constructs the light manager. More... | |
| __init__ (const InternalLightManager) | |
| addLight (RPLight light) | |
| Adds a new light. More... | |
| int | getMaxLightIndex () |
| Returns the maximum light index. More... | |
| int | getNumLights () |
| Returns the amount of stored lights. More... | |
| int | getNumShadowSources () |
| Returns the amount of shadow sources. More... | |
| ShadowManager | getShadowManager () |
| Returns the internal used ShadowManager. More... | |
| removeLight (RPLight light) | |
| Removes a light. More... | |
| setCameraPos (const LPoint3 pos) | |
| Sets the camera position. More... | |
| setCommandList (GPUCommandList cmd_list) | |
| Sets a handle to the command list. More... | |
| setShadowManager (ShadowManager mgr) | |
| Sets the handle to the shadow manager. More... | |
| setShadowUpdateDistance (float dist) | |
| Sets the maximum shadow update distance. More... | |
| update () | |
| Main update method. More... | |
Public Attributes | |
| int | max_light_index |
| Returns the maximum light index. More... | |
| int | num_lights |
| Returns the amount of stored lights. More... | |
| int | num_shadow_sources |
| Returns the amount of shadow sources. More... | |
| ShadowManager | shadow_manager |
| Returns the internal used ShadowManager. More... | |
Internal class used for handling lights and shadows.
This is the internal class used by the pipeline to handle all lights and shadows. It stores references to the lights, manages handling the light and shadow slots, and also communicates with the GPU with the GPUCommandQueue to store light and shadow source data.
| __init__ | ( | ) |
Constructs the light manager.
This constructs the light manager, initializing the light and shadow storage. You should set a command list and shadow manager before calling InternalLightManager::update. s
| __init__ | ( | const | InternalLightManager | ) |
| addLight | ( | RPLight | light | ) |
Adds a new light.
This adds a new light to the list of lights. This will throw an error and return if the light is already attached. You may only call this after the ShadowManager was already set.
While the light is attached, the light manager keeps a reference to it, so the light does not get destructed.
This also setups the shadows on the light, in case shadows are enabled. While a light is attached, you can not change whether it casts shadows or not. To do so, detach the light, change the setting, and re-add the light.
In case no free light slot is available, an error will be printed and no action will be performed.
If no shadow manager was set, an assertion will be triggered.
| light | The light to add. |
| int getMaxLightIndex | ( | ) |
Returns the maximum light index.
This returns the maximum light index (also called slot). Any lights after that slot are guaranteed to be zero-lights. This is useful when iterating over the list of lights, because iteration can be stopped when the maximum light index is reached.
The maximum light index points to the last slot which is used. If no lights are attached, -1 is returned. If one light is attached at slot 0, the index is 0, if two are attached at the slots 0 and 1, the index is 1, and so on.
If, for example, two lights are attached at the slots 2 and 5, then the index will be 5. Keep in mind that the max-index is not an indicator for how many lights are attached. Also, zero lights still may occur when iterating over the light lists
| int getNumLights | ( | ) |
Returns the amount of stored lights.
This returns the amount of stored lights. This behaves unlike InternalLightManager::get_max_light_index, and instead returns the true amount of lights, which is completely unrelated to the amount of used slots.
| int getNumShadowSources | ( | ) |
Returns the amount of shadow sources.
This returns the total amount of stored shadow sources. This does not denote the amount of updated sources, but instead takes into account all sources, even those out of frustum.
| ShadowManager getShadowManager | ( | ) |
Returns the internal used ShadowManager.
This returns a handle to the internally used shadow manager
| removeLight | ( | RPLight | light | ) |
Removes a light.
This detaches a light. This prevents it from being rendered, and also cleans up all resources used by that light. If no reference is kept on the python side, the light will also get destructed.
If the light was not previously attached with InternalLightManager::add_light, an error will be triggered and nothing happens.
In case the light was set to cast shadows, all shadow sources are cleaned up, and their regions in the shadow atlas are freed.
All resources used by the light in the light and shadow storage are also cleaned up, by emitting cleanup GPUCommands.
If no shadow manager was set, an assertion will be triggered.
| light | [description] |
| setCameraPos | ( | const LPoint3 | pos | ) |
Sets the camera position.
This sets the camera position, which will be used to determine which shadow sources have to get updated
| mat | View projection mat |
| setCommandList | ( | GPUCommandList | cmd_list | ) |
Sets a handle to the command list.
This sets a handle to the global GPUCommandList. This is required to emit GPUCommands, which are used for attaching and detaching lights, as well as shadow source updates.
The cmd_list should be a handle to a GPUCommandList handle, and will be stored somewhere on the python side most likely. The light manager does not keep a reference to it, so the python side should make sure to keep one.
Be sure to call this before the InternalLightManager::update() method is called, otherwise an assertion will get triggered.
| cmd_list | The GPUCommandList instance |
| setShadowManager | ( | ShadowManager | mgr | ) |
Sets the handle to the shadow manager.
This sets the handle to the global shadow manager. It is usually constructed on the python side, so we need to get a handle to it.
The manager should be a handle to a ShadowManager instance, and will be stored somewhere on the python side most likely. The light manager does not keep a reference to it, so the python side should make sure to keep one.
Be sure to call this before the InternalLightManager::update() method is called, otherwise an assertion will get triggered.
| mgr | The ShadowManager instance |
| setShadowUpdateDistance | ( | float | dist | ) |
Sets the maximum shadow update distance.
This controls the maximum distance until which shadows are updated. If a shadow source is past that distance, it is ignored and no longer recieves updates until it is in range again
| dist | Distance in world space units |
| update | ( | ) |
Main update method.
This is the main update method of the InternalLightManager. It processes all lights and shadow sources, updates them, and notifies the GPU about it. This should be called on a per-frame basis.
If the InternalLightManager was not initialized yet, an assertion is thrown.
| int max_light_index |
Returns the maximum light index.
This returns the maximum light index (also called slot). Any lights after that slot are guaranteed to be zero-lights. This is useful when iterating over the list of lights, because iteration can be stopped when the maximum light index is reached.
The maximum light index points to the last slot which is used. If no lights are attached, -1 is returned. If one light is attached at slot 0, the index is 0, if two are attached at the slots 0 and 1, the index is 1, and so on.
If, for example, two lights are attached at the slots 2 and 5, then the index will be 5. Keep in mind that the max-index is not an indicator for how many lights are attached. Also, zero lights still may occur when iterating over the light lists
| int num_lights |
Returns the amount of stored lights.
This returns the amount of stored lights. This behaves unlike InternalLightManager::get_max_light_index, and instead returns the true amount of lights, which is completely unrelated to the amount of used slots.
| int num_shadow_sources |
Returns the amount of shadow sources.
This returns the total amount of stored shadow sources. This does not denote the amount of updated sources, but instead takes into account all sources, even those out of frustum.
| ShadowManager shadow_manager |
Returns the internal used ShadowManager.
This returns a handle to the internally used shadow manager


Chilies!
Spices and ingredients delivery in under 15 minutes!
Privacy Policy for chilies.app (Short version) ↴
What data do we collect?
2 things: your email and usage data through Google Analytics
How do we use it?
Your email will be used to message you at most 3 times. Once for your registration confirmation, another time for the survey and one last time to notify you when we are live.
Once the company goes live, we will ask again for your consent to register again to the actual newsletter through our last third email mentioned before, otherwise we will remove your email from the subscription list.
Which third parties receive this data?
Mailchimp and Google
What about web analytics, in particular Google Analytics?
We use the Google Analytics tag to track how many people visit the site, from which location and general behavior analytics. We will use this data inside the Google Analytics platform to Measure customer engagement with my site or app, Optimize my site or app experience, Measure data across multiple devices or platforms, Optimize my advertising cost and Measure lead generation.
Can I amend or delete my data?
According to the GDPR, you have a right to information, free of charge, about the data which is stored about you as well as, where appropriate, a right to the correction, blocking or deletion of this data. In addition, you may withdraw your consent to receive newsletters at any time with effect for the future by unsubscribing from the newsletter through a link you received on your subscription confirmation email, or by contacting us at<EMAIL_ADDRESS>Can I complain to the relevant authorities?
As a concerned party you have this right in case of a data privacy law breach. The authority governing these cases is the Landesdatenschutzbeauftragter of the state of Berlin. The following link lists contact information for the Landesdatenschutzbeauftragte of all German states: Landesdatenschutzbeauftragte
Consent
By using our website, you hereby consent to our Privacy Policy.
Privacy Policy for chilies.app (Long version) ↴
At chilies.app, accessible from chilies.app, one of our main priorities is the privacy of our visitors. This Privacy Policy document contains types of information that is collected and recorded by chilies.app and how we use it.
If you have additional questions or require more information about our Privacy Policy, do not hesitate to contact us.
Log Files
chilies.app follows a standard procedure of using log files. These files log visitors when they visit websites. All hosting companies do this and a part of hosting services' analytics. The information collected by log files include internet protocol (IP) addresses, browser type, Internet Service Provider (ISP), date and time stamp, referring/exit pages, and possibly the number of clicks. These are not linked to any information that is personally identifiable. The purpose of the information is for analyzing trends, administering the site, tracking users' movement on the website, and gathering demographic information. Our Privacy Policy was created with the help of the Privacy Policy Generator and the Privacy Policy Generator.
Cookies and Web Beacons
Like any other website, chilies.app uses 'cookies'. These cookies are used to store information including visitors' preferences, and the pages on the website that the visitor accessed or visited. The information is used to optimize the users' experience by customizing our web page content based on visitors' browser type and/or other information.
For more general information on cookies, please read the "What Are Cookies" article on Cookie Consent website.
Privacy Policies
You may consult this list to find the Privacy Policy for each of the advertising partners of chilies.app.
Third-party ad servers or ad networks uses technologies like cookies, JavaScript, or Web Beacons that are used in their respective advertisements and links that appear on chilies.app, which are sent directly to users' browser. They automatically receive your IP address when this occurs. These technologies are used to measure the effectiveness of their advertising campaigns and/or to personalize the advertising content that you see on websites that you visit.
Note that chilies.app has no access to or control over these cookies that are used by third-party advertisers.
Third Party Privacy Policies
chilies.app's Privacy Policy does not apply to other advertisers or websites. Thus, we are advising you to consult the respective Privacy Policies of these third-party ad servers for more detailed information. It may include their practices and instructions about how to opt-out of certain options.
You can choose to disable cookies through your individual browser options. To know more detailed information about cookie management with specific web browsers, it can be found at the browsers' respective websites. What Are Cookies?
Children's Information
Another part of our priority is adding protection for children while using the internet. We encourage parents and guardians to observe, participate in, and/or monitor and guide their online activity.
chilies.app does not knowingly collect any Personal Identifiable Information from children under the age of 13. If you think that your child provided this kind of information on our website, we strongly encourage you to contact us immediately and we will do our best efforts to promptly remove such information from our records.
Online Privacy Policy Only
This Privacy Policy applies only to our online activities and is valid for visitors to our website with regards to the information that they shared and/or collect in chilies.app. This policy is not applicable to any information collected offline or via channels other than this website.
Consent
By using our website, you hereby consent to our Privacy Policy.


Add a dollar
Populate with test data
Father's Day Template
To {{key}}
From {{key}}
Body
Signature
Preview
Front
Back
Complete


In The eCommerce Age, Consumers Want To Control Authentication
by PYMNTSFraudsters are getting ever nimbler at tricking consumers into divulging information that is then used to compromise accounts. Against a backdrop where eCommerce is worth trillions of dollars, consumers want more control over how transactions are authenticated. The Consumer-Centric Authentication Playbook shows that an overwhelming majority of users want the flexibility to set such protocols within their mobile banking apps – but FIs are lagging in meeting those demands.
Data:
70.2 percent: Share of users who say they want controls for added security.
93.1 percent: Portion of consumers who want to choose their login authentication methods.
86.5 percent: Share of consumers who would like transaction-specific authentication requirements.
34.3 percent: Portion of consumers able to choose their own login authentication methods.
$3T: Estimated global value of eCommerce in 2019.


PyCon, the gathering for the community using and developing the open-source Python programming language. During PyCon Pune, the community will meet for two days of talks and work on upstream projects in two days of dev sprint.
8-9
February
Talk
Dozens of talks chosen by the community
10-11
February
Dev Sprint
Team up to work on upstream projects
Pune, also called Poona, city, west-central Maharashtra state, western India, at the junction of the Mula and Mutha rivers. Called “Queen of the Deccan”. Pune has long been a major educational and cultural centre; former prime minister Jawaharlal Nehru referred to it as the “Oxford and Cambridge of India”.
Amanora The Fern Hotels and Club This palatial hotel with a columned facade, sprawling grounds and a lake is 9 km from Aga Khan Palace, an 1892 landmark honouring Gandhi. Pune Airport is 11 km away. Haute rooms with balconies feature flat-screens, minibars and tea and coffeemaking facilities; upgraded rooms add free Wi-Fi. Suites have separate living rooms and exclusive lounge access. Room service is offered 24/7.


 Can be moved manually by the user, but normally they move according to forces. A dynamic body can collide with all body types. A dynamic body always has finite, non-zero mass. More...
|
| |
| | STATIC = 2 |
| | A static body does not move during simulation and behaves as if it has infinite mass. Static bodies can be moved manually by setting the position of the body. The velocity of a static body is always zero. Static bodies do not collide with other static or kinematic bodies. More...
|
| |
| | AWAKE = 0 |
| | AWAKE, Normal state.  More...
|
| |
◆ COLLIDE_EVENT_NAME
| #define COLLIDE_EVENT_NAME = "collide"; |
Collision Event dispatched after two bodies collide. This event is dispatched on each of the two bodies involved in the collision.
◆ AWAKE
◆ DYNAMIC
A dynamic body is fully simulated. Can be moved manually by the user, but normally they move according to forces. A dynamic body can collide with all body types. A dynamic body always has finite, non-zero mass.
◆ SLEEPY
SLEEPY, Being ready to sleeping.
◆ STATIC
A static body does not move during simulation and behaves as if it has infinite mass. Static bodies can be moved manually by setting the position of the body. The velocity of a static body is always zero. Static bodies do not collide with other static or kinematic bodies.
◆ UNKNOWN