Wheel Class
Wheel
Instantiation
- scrawl.makeWheel()
Purpose
- Defines 'arc' objects for displaying on a Cell's canvas
- Performs 'arc' based drawing operations on canvases
Access
- scrawl.entity.WHEELNAME - for the Wheel entity object
Constructor
Wheel
-
[items]
Parameters:
-
[items]
Object optionalKey:value Object argument for setting attributes
Item Index
Methods
- animationPositionClone
- animationPositionGet
- animationPositionInit
- animationPositionSet
- buildCollisionVectors
- buildPath
- checkHit
- clear
- clearShadow
- clearWithBackground
- clip
- clone
- collisionsEntityConstructor
- collisionsEntityRegisterInLibrary
- collisionsEntitySet
- collisionsEntitySetDelta
- correctCoordinates
- draw
- drawFill
- dropEntity
- fill
- fillDraw
- filtersEntityInit
- floatOver
- forceStamp
- get
- getChanges
- getContextFromEngine
- getEntityCell
- getGroup
- getHandleValues
- getMaxDimensions
- getReferenceDimensions
- getStart
- getStartValues
- getX
- getY
- none
- numberConvert
- parse
- pathPositionInit
- pathPositionSetDelta
- pathStamp
- pickupEntity
- registerInLibrary
- resetCollisionPoints
- restoreShadow
- rotateCell
- set
- setDelta
- setDeltaHandle
- setDeltaHeight
- setDeltaRoll
- setDeltaScale
- setDeltaStart
- setDeltaWidth
- setHandle
- setRadius
- setStampUsingPivot
- setStart
- sinkInto
- stamp
- stampFilter
- updateCurrentHandle
- updateCurrentStart
Properties
- checkHitRadius
- checkHitUsingRadius
- clockwise
- closed
- comment
- context
- data
- deltaPathPlace
- endAngle
- fastStamp
- fillStyle
- flipReverse
- flipUpend
- font
- globalAlpha
- globalCompositeOperation
- group
- handle
- height
- includeCenter
- lineCap
- lineDash
- lineDashOffset
- lineJoin
- lineWidth
- localCheckHitRadius
- localRadius
- lockX
- lockY
- maxDimensions
- method
- miterLimit
- mouseIndex
- name
- order
- path
- pathPlace
- pathSpeedConstant
- pivot
- radius
- roll
- scale
- scaleOutline
- shadowBlur
- shadowColor
- shadowOffsetX
- shadowOffsetY
- start
- startAngle
- strokeStyle
- textAlign
- textBaseline
- timestamp
- title
- type
- visibility
- width
- winding
Methods
animationPositionClone
()
private
Position.setDelta hook function - modified by animation extension
animationPositionGet
()
private
Position.get hook function - modified by animation extension
animationPositionInit
()
private
Position constructor hook function - modified by animation extension
animationPositionSet
()
private
Position.set hook function - modified by animation extension
buildCollisionVectors
-
[items]
Collision detection helper function
Parses the collisionPoints array to generate coordinate Vectors representing the entity's collision points
Parameters:
-
[items]
Array optionalArray of collision point data
Returns:
This
buildPath
-
ctx
-
cell
Stamp helper function - define the entity's path on the <canvas> element's context engine
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
checkHit
-
items
Check a set of coordinates to see if any of them fall within this entity's path - uses JavaScript's isPointInPath function
Argument object contains the following attributes:
- tests - an array of Vector coordinates to be checked; alternatively can be a single Vector
- x - X coordinate
- y - Y coordinate
- pad - PADNAME String
Either the 'tests' attribute should contain a Vector, or an array of vectors, or the x and y attributes should be set to Number values
If the checkHitUsingRadius attribute is true, collisions will be detected using a simple distance comparison; otherwise the JavaScript isPointInPath() function will be invoked
Parameters:
-
items
ObjectArgument object
Returns:
The first coordinate to fall within the entity's path; false if none fall within the path
clear
-
ctx
-
cell
Stamp helper function - perform a 'clear' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
clearShadow
-
ctx
-
cell
Stamp helper function - clear shadow parameters during a multi draw operation (drawFill and fillDraw methods)
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
clearWithBackground
-
ctx
-
cell
Stamp helper function - perform a 'clearWithBackground' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
clip
-
ctx
-
cell
Stamp helper function - perform a 'clip' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
clone
-
items
Augments Position.clone()
Parameters:
-
items
ObjectObject consisting of key:value attributes, used to update the clone's attributes with new values
Returns:
Cloned object
collisionsEntityConstructor
()
private
Entity constructor hook function - modified by collisions extension
collisionsEntityRegisterInLibrary
()
private
Entity.registerInLibrary hook function - modified by collisions extension
collisionsEntitySet
()
private
Entity.set hook function - modified by collisions extension
collisionsEntitySetDelta
()
private
Entity.setDelta hook function - modified by collisions extension
correctCoordinates
-
coords
-
[cell]
Stamp helper function - correct mouse coordinates if pad dimensions not equal to base cell dimensions
Parameters:
-
coords
ObjectAn object containing x and y attributes
-
[cell]
String optionalCELLNAME String
Returns:
Amended coordinate object
draw
-
ctx
-
cell
Stamp helper function - perform a 'draw' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
drawFill
-
ctx
-
cell
Stamp helper function - perform a 'drawFill' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
dropEntity
-
[items]
Revert pickupEntity() actions, ensuring entity is left where the user drops it
Parameters:
-
[items]
String optionalAlternative pivot String
Returns:
This
fill
-
ctx
-
cell
Stamp helper function - perform a 'fill' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
fillDraw
-
ctx
-
cell
Stamp helper function - perform a 'fillDraw' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
filtersEntityInit
()
private
Entity constructor hook function - modified by filters extension
floatOver
-
ctx
-
cell
Stamp helper function - perform a 'floatOver' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
forceStamp
-
[method]
-
[cellname]
-
[cell]
-
[mouse]
Stamp function - instruct entity to draw itself on a Cell's <canvas> element, regardless of the setting of its visibility attribute
Permitted methods include:
- 'draw' - stroke the entity's path with the entity's strokeStyle color, pattern or gradient
- 'fill' - fill the entity's path with the entity's fillStyle color, pattern or gradient
- 'drawFill' - stroke, and then fill, the entity's path; if a shadow offset is present, the shadow is added only to the stroke action
- 'fillDraw' - fill, and then stroke, the entity's path; if a shadow offset is present, the shadow is added only to the fill action
- 'floatOver' - stroke, and then fill, the entity's path; shadow offset is added to both actions
- 'sinkInto' - fill, and then stroke, the entity's path; shadow offset is added to both actions
- 'clear' - fill the entity's path with transparent color 'rgba(0, 0, 0, 0)'
- 'clearWithBackground' - fill the entity's path with the Cell's current backgroundColor
- 'clip' - clip the drawing zone to the entity's path (not tested)
- 'none' - perform all necessary updates, but do not draw the entity onto the canvas
Parameters:
-
[method]
String optionalPermitted method attribute String; by default, will use entity's own method setting
-
[cellname]
String optionalCELLNAME of cell on which entitys are to draw themselves
-
[cell]
Object optionalcell wrapper object
-
[mouse]
Vector optionalcoordinates to be used for any entity currently pivoted to a mouse/touch event
Returns:
This
get
-
item
Augments Position.get()
Allows users to retrieve a entity's Context object's values via the entity
Parameters:
-
item
Stringattribute key string
Returns:
Attribute value
getChanges
-
ctx
Interrogates a <canvas> element's context engine and populates its own attributes with returned values
(Only for use by Context objects)
Parameters:
-
ctx
Object<canvas> element context engine Object
Returns:
This
getContextFromEngine
-
ctx
Interrogates a <canvas> element's context engine and populates its own attributes with returned values
(Only for use by Context objects)
Parameters:
-
ctx
Object<canvas> element context engine Object
Returns:
This
getEntityCell
()
private
Helper function - get a entity's cell onbject
Returns:
Cell object
getGroup
-
[items]
Constructor helper function - discover this entity's default group affiliation
Parameters:
-
[items]
Object optionalConstructor argument
Returns:
GROUPNAME String
getHandleValues
()
private
Entity.getHandleValues
getMaxDimensions
-
cell
-
entity
Calculate the box position of the entity
Returns an object with the following attributes:
- left - x coordinate of top-left corner of the enclosing box relative to the current cell's top-left corner
- top - y coordinate of top-left corner of the enclosing box relative to the current cell's top-left corner
- bottom - x coordinate of bottom-right corner of the enclosing box relative to the current cell's top-left corner
- left - y coordinate of bottom-right corner of the enclosing box relative to the current cell's top-left corner
Parameters:
-
cell
Objectobject
-
entity
Objectobject
Returns:
dimensions object
getReferenceDimensions
-
reference
updateCurrentHandle helper object
Parameters:
-
reference
Objectobject - Stack, Pad, Element, Cell or Entity (Block, Wheel, Phrase, Picture, Path, Shape or Frame)
Returns:
Object with attributes
getStart
()
Entity.getStart
getStartValues
()
private
Entity.getStartValues
getX
()
Get the current start x coordinate
Returns:
Attribute value
getY
()
Get the current start y coordinate
Returns:
Attribute value
none
-
ctx
-
cell
Stamp helper function - perform a 'none' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
numberConvert
-
val
-
dim
Stamp helper function - convert string percentage values to numerical values
Parameters:
-
val
Stringcoordinate String
-
dim
Numberdimension value
Returns:
Number - value
parse
()
Turn the object into a JSON String
Returns:
object of object's currently set attributes
pathPositionInit
()
private
Position constructor hook function - modified by path extension
pathPositionSetDelta
()
private
Position.setDelta hook function - modified by path extension
pathStamp
()
private
Entity.stamp hook function - modified by path extension
pickupEntity
-
items
Set entity's pivot to 'mouse'; set handles to supplied Vector value; set order to +9999
Parameters:
-
items
VectorCoordinate vector; alternatively an object with {x, y} attributes can be used
Returns:
This
registerInLibrary
()
private
chainable
Constructor helper function - register entity object in the scrawl library
Returns:
This
resetCollisionPoints
()
chainable
stamp helper function - amended by collisions extension
Returns:
this
restoreShadow
-
ctx
-
cell
Stamp helper function - clear shadow parameters during a multi draw operation (Phrase text-along-path drawFill and fillDraw methods)
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
rotateCell
-
ctx
-
cell
Stamp helper function - rotate and position canvas ready for drawing entity
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCell name
Returns:
This
set
-
items
Augments Entity.set()
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setDelta
-
items
Augments Entity.setDelta()
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setDeltaHandle
-
items
Adds the value of each attribute supplied in the argument to existing values. This function accepts handle, handleX, handleY
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setDeltaHeight
-
items
Adds the value of each attribute supplied in the argument to existing values. This function accepts height
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setDeltaRoll
-
items
Adds the value of each attribute supplied in the argument to existing values. This function accepts roll
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setDeltaScale
-
items
Adds the value of each attribute supplied in the argument to existing values. This function accepts scale
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setDeltaStart
-
items
Adds the value of each attribute supplied in the argument to existing values; This function accepts start, startX, startY
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setDeltaWidth
-
items
Adds the value of each attribute supplied in the argument to existing values. This function accepts width
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setHandle
-
items
Augments Base.setHandle(), to allow users to set the handle attributes using handle, handleX, handleY
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setRadius
()
private
set helper function
Returns:
Number - local radius value
setStampUsingPivot
-
[cell]
Stamp helper function - set this entity, cell or element start values to its pivot entity/point start value, or to the current mouse coordinates
Takes into account lock flag settings
Parameters:
-
[cell]
String optionalCELLNAME String
Returns:
This
setStart
-
items
Augments Base.setStart(), to allow users to set the start attributes using start, startX, startY
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
sinkInto
-
ctx
-
cell
Stamp helper function - perform a 'sinkInto' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cell
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
Returns:
This
stamp
-
[method]
-
[cellname]
-
[cell]
-
[mouse]
Stamp function - instruct entity to draw itself on a Cell's <canvas> element, if its visibility attribute is true
Permitted methods include:
- 'draw' - stroke the entity's path with the entity's strokeStyle color, pattern or gradient
- 'fill' - fill the entity's path with the entity's fillStyle color, pattern or gradient
- 'drawFill' - stroke, and then fill, the entity's path; if a shadow offset is present, the shadow is added only to the stroke action
- 'fillDraw' - fill, and then stroke, the entity's path; if a shadow offset is present, the shadow is added only to the fill action
- 'floatOver' - stroke, and then fill, the entity's path; shadow offset is added to both actions
- 'sinkInto' - fill, and then stroke, the entity's path; shadow offset is added to both actions
- 'clear' - fill the entity's path with transparent color 'rgba(0, 0, 0, 0)'
- 'clearWithBackground' - fill the entity's path with the Cell's current backgroundColor
- 'clip' - clip the drawing zone to the entity's path (not tested)
- 'none' - perform all necessary updates, but do not draw the entity onto the canvas
Parameters:
-
[method]
String optionalPermitted method attribute String; by default, will use entity's own method setting
-
[cellname]
String optionalCELLNAME of cell on which entitys are to draw themselves
-
[cell]
Object optionalcell wrapper object
-
[mouse]
Vector optionalcoordinates to be used for any entity currently pivoted to a mouse/touch event
Returns:
This
stampFilter
()
private
Entity.stamp hook function - modified by filters extension
updateCurrentHandle
()
private
chainable
Convert handle percentage values to numerical values, stored in currentHandle
Returns:
This
updateCurrentStart
-
reference
Convert start percentage values to numerical values, stored in currentStart
Parameters:
-
reference
Objectobject - Stack, Pad, Element, Cell or Entity (Block, Wheel, Phrase, Picture, Path, Shape or Frame)
Returns:
This
Properties
checkHitRadius
Number (or String)
Collision calculation value - collision radius, from start vector
May be an absolute number value, or a percentage String (relative to the Cell's width)
Default: 0
checkHitUsingRadius
Boolean
Collision calculation flag - true to use a simple radius check; false to use the JavaScript isPointInPath() function
Default: true
clockwise
Boolean
Drawing flag - true to draw the arc in a clockwise direction; false for anti-clockwise
Default: false
closed
Boolean
Drawing flag - true to close the path; false to keep the path open
Default: true
comment
String
Comment, for accessibility
Default: ''
context
String
private
CTXNAME of this Entity's Context object
Default: ''
data
String
Current SVGTiny data string for the entity (only supported by Path and Shape entitys)
Default: ''
deltaPathPlace
Number
(Added by the path extension) A change value which can be applied to the object's pathPlace attribute
Default: 0
endAngle
Number
Angle of the path's end point, from due east, in degrees
Default: 360
fastStamp
Boolean
Display cycle flag; if set to true, entity will not change the <canvas> element's context engine's settings before drawing itself on the cell
Default: false
fillStyle
String
Color, gradient or pattern used to fill a entity. Can be:
- Cascading Style Sheet format color String - '#fff', '#ffffff', 'rgb(255,255,255)', 'rgba(255,255,255,1)', 'white'
- COLORNAME String
- GRADIENTNAME String
- RADIALGRADIENTNAME String
- PATTERNNAME String
Default: '#000000'
flipReverse
Boolean
Reflection flag; set to true to flip entity, cell or element along the Y axis
Default: false
flipUpend
Boolean
Reflection flag; set to true to flip entity, cell or element along the X axis
Default: false
font
String
Cascading Style Sheet font String, for Phrase entitys
Default: '10pt sans-serif'
globalAlpha
Number
Entity transparency - a value between 0 and 1, where 0 is completely transparent and 1 is completely opaque
Default: 1
globalCompositeOperation
String
Compositing method for applying the entity to an existing Cell (<canvas>) display. Permitted values include
- 'source-over'
- 'source-atop'
- 'source-in'
- 'source-out'
- 'destination-over'
- 'destination-atop'
- 'destination-in'
- 'destination-out'
- 'lighter'
- 'darker'
- 'copy'
- 'xor'
Be aware that different browsers render these operations in different ways, and some options are not supported by all browsers
Default: 'source-over'
group
String
GROUPNAME String for this entity's default group
Note: a entity can belong to more than one group by being added to other Group objects via the scrawl.addEntitysToGroups() and Group.addEntityToGroup() functions
Default: ''
handle
Object
An Object (in fact, a Vector) containing offset instructions from the object's rotation/flip point, where drawing commences.
SubScrawl, and all Objects that prototype chain to Subscrawl, supports the following 'virtual' attributes for this attribute:
- handleX - (Mixed) the horizontal offset, either as a Number (in pixels), or a percentage String of the object's width, or the String literal 'left', 'right' or 'center'
- handleY - (Mixed) the vertical offset, either as a Number (in pixels), or a percentage String of the object's height, or the String literal 'top', 'bottom' or 'center'
Where values are Numbers, handle can be treated like any other Vector
height
Number
Entity, cell or element height (in pixels)
Default: 0
includeCenter
Boolean
Drawing flag - true to include the center in the path (for wedge shapes); false for circles
Default: false
lineCap
String
Line cap styling. Permitted values include:
- 'butt'
- 'round'
- 'square'
Default: 'butt'
lineDash
Array
Line dash format - an array of Numbers representing line and gap values (in pixels), for example [5,2,2,2] for a long-short dash pattern
Default: []
lineDashOffset
Number
Line dash offset - distance along the entity's outline at which to start the line dash. Changing this value can be used to create a 'marching ants effect
Default: 0
lineJoin
String
Line join styling. Permitted values include:
- 'miter'
- 'round'
- 'bevel'
Default: 'miter'
lineWidth
Number
Line width, in pixels
Default: 1
localCheckHitRadius
Number
private
Collision calculation value - collision radius, from start vector
Default: 0
localRadius
Number
private
Calculated radius value
Default: 0
lockX
Boolean
Positioning flag; set to true to ignore path/pivot/mouse changes along the X axis
Default: false
lockY
Boolean
Positioning flag; set to true to ignore path/pivot/mouse changes along the Y axis
Default: false
maxDimensions
Object
private
An object with the following attributes:
- left - x coordinate of top-left corner of the enclosing box relative to the current cell's top-left corner
- top - y coordinate of top-left corner of the enclosing box relative to the current cell's top-left corner
- bottom - x coordinate of bottom-right corner of the enclosing box relative to the current cell's top-left corner
- left - y coordinate of bottom-right corner of the enclosing box relative to the current cell's top-left corner
Default: null
method
String
Entity drawing method. An entity can be drawn onto a <canvas> element in a variety of ways; these methods include:
- 'draw' - stroke the entity's path with the entity's strokeStyle color, pattern or gradient
- 'fill' - fill the entity's path with the entity's fillStyle color, pattern or gradient
- 'drawFill' - stroke, and then fill, the entity's path; if a shadow offset is present, the shadow is added only to the stroke action
- 'fillDraw' - fill, and then stroke, the entity's path; if a shadow offset is present, the shadow is added only to the fill action
- 'floatOver' - stroke, and then fill, the entity's path; shadow offset is added to both actions
- 'sinkInto' - fill, and then stroke, the entity's path; shadow offset is added to both actions
- 'clear' - fill the entity's path with transparent color 'rgba(0, 0, 0, 0)'
- 'clearWithBackground' - fill the entity's path with the Cell's current backgroundColor
- 'clip' - clip the drawing zone to the entity's path (not tested)
- 'none' - perform all necessary updates, but do not draw the entity onto the canvas
Note: not all entitys support all of these operations
Default: 'fill'
miterLimit
Number
miterLimit - affecting the 'pointiness' of the line join where two lines join at an acute angle
Default: 10
mouseIndex
String
Index of mouse vector to use when pivot === 'mouse'
The Pad.mice object can hold details of multiple touch events - when an entity is assigned to a 'mouse', it needs to know which of those mouse trackers to use. Default: mouse (for the mouse cursor vector)
Default: 'mouse'
name
String
Unique identifier for each object; default: computer-generated String based on Object's type
order
Number
Entity order value - lower order entitys are drawn on <canvas> elements before higher order entitys
Default: 0
path
String
(Added by the path extension) The ENTITYNAME of a Shape entity whose path is used to calculate this object's start point
Default: ''
pathPlace
Number
(Added by the path extension) A value between 0 and 1 to represent the distance along a Path object's path, where 0 is the path start and 1 is the path end
Default: 0
pathSpeedConstant
Boolean
(Added by the path extension) A flag to determine whether the object will calculate its position along a Shape path in a regular (true), or simple (false), manner
Default: true
pivot
String
The ENTITYNAME or POINTNAME of a entity or Point object to be used for setting this object's start point
Default: null
radius
Number (or String)
Circle radius - can be an absolute Numbewr value, or a percentage String value (relative to the Cell's width)
Default: 0
roll
Number
Current rotation of the entity, cell or element (in degrees)
Default: 0
scale
Number
The object's scale value - larger values increase the object's size
Default: 1
scaleOutline
Boolean
Scaling flag; set to true to ensure lineWidth scales in line with the scale attribute value
Default: true
shadowBlur
Number
Blur border for a entity's shadow, in pixels
Default: 0
shadowColor
String
Color used for entity shadow effect. Can be:
- Cascading Style Sheet format color String - '#fff', '#ffffff', 'rgb(255,255,255)', 'rgba(255,255,255,1)', 'white'
- COLORNAME String
Default: 'rgba(0,0,0,0)'
shadowOffsetX
Number
Horizontal offset of a entity's shadow, in pixels
Default: 0
shadowOffsetY
Number
Vertical offset of a entity's shadow, in pixels
Default: 0
start
Vector
The coordinate Vector representing the object's rotation/flip point
SubScrawl, and all Objects that prototype chain to Subscrawl, supports the following 'virtual' attributes for this attribute:
- startX - (Number) the x coordinate of the object's rotation/flip point, in pixels, from the left side of the object's cell
- startY - (Number) the y coordinate of the object's rotation/flip point, in pixels, from the top side of the object's cell
startAngle
Number
Angle of the path's start point, from due east, in degrees
Default: 0
strokeStyle
String
Color, gradient or pattern used to outline a entity. Can be:
- Cascading Style Sheet format color String - '#fff', '#ffffff', 'rgb(255,255,255)', 'rgba(255,255,255,1)', 'white'
- COLORNAME String
- GRADIENTNAME String
- RADIALGRADIENTNAME String
- PATTERNNAME String
Default: '#000000'
textAlign
String
Text alignment for multi-line Phrase entitys. Permitted values include:
- 'start'
- 'left'
- 'center'
- 'right'
- 'end'
Default: 'start'
textBaseline
String
Text baseline value for single-line Phrase entitys set to follow a Path entity path. Permitted values include:
- 'alphabetic'
- 'top'
- 'hanging'
- 'middle'
- 'ideographic'
- 'bottom'
Default: 'alphabetic'
timestamp
String
Creation timestamp
Default: ''
title
String
Title, for accessibility
Default: ''
type
String
final
Default: 'Wheel'
visibility
Boolean
Visibility flag - entitys will (in general) not be drawn on a <canvas> element when this flag is set to false
Default: true
width
Number
Entity, cell or element width (in pixels)
Default: 0
winding
String
Shape and Path entity fill method. Can be:
- 'nonzero' - all areas enclosed by the entity's path are flooded
- 'evenodd' - only 'odd' areas of the entity's path are flooded
Default: 'nonzero'


Bora UI Automation
Students
Logout
Student Profile
New Student
Test Automation Engineer at Amazon
Reston, VA
Skill Set
Java
Selenium
SQL
TestNG
Maven
Are you sure?
×
Explore around and see if you can connect with other students.


I am a curious and inquisitive student currently dwelling within the hallowed halls of the University of Waterloo - trying my best at something called studying at a thing called Systems Design Engineering.
This page is dedicated to displaying various projects I have done in the past and information of interest about me.


Contact Us!
Home
About
Contact Us
Services
Contact Form
First Name:
Last Name:
Email:
Phone Number<PHONE_NUMBER>):
Address:
Select one or more services you would like:
Mowing
Landscape Maintenance
Hedging
Tree Pruning
Flower Planting
Tree Planting
Submit


{% extends "!footer.html" %} {% block extrafooter %}
The design of this documentation has been inspired by the documentation of the Python package scanpy


vignettes/intro-to-colorblindcheck.Rmd
intro-to-colorblindcheck.Rmd
Deciding if a color palette is a colorblind friendly is a hard task. This cannot be done in an entirely automatic fashion, as the decision needs to be confirmed by visual judgments. The goal of colorblindcheck is to provide tools to decide if the selected color palette is colorblind friendly, including:
palette_dist()
- Calculation of the distances between the colors in the input palette and between the colors in simulations of the color vision deficiencies - deuteranopia, protanopia, and tritanopia.palette_plot()
- Plotting of the original input palette and simulations of color vision deficiencies - deuteranopia, protanopia, and tritanopia.palette_check()
- Creating summary statistics comparing the original input palette and simulations of color vision deficiencies - deuteranopia, protanopia, and tritanopia.The work in this package was inspired by a blog post I wrote some code that automatically checks visualizations for non-colorblind safe colors. Here’s how it works by Gregor Aisch.
The colorblindcheck accepts a vector of hexadecimal color descriptions as the input. It can be created using different existing R functions (e.g. rainbow()
) or packages (e.g. colorspace, RColorBrewer, rcartocolor, etc.).
library(colorblindcheck) rainbow_pal = rainbow(n = 7) rainbow_pal #> [1] "#FF0000" "#FFDB00" "#49FF00" "#00FF92" "#0092FF" "#4900FF" "#FF00DB"
The primary function in this package is palette_check()
, which creates a summary comparison between the original input palette and simulations of color vision deficiencies - deuteranopia, protanopia, and tritanopia.
palette_check(rainbow_pal, plot = TRUE)
#> name n tolerance ncp ndcp min_dist mean_dist max_dist
#> 1 normal 7 12.13226 21 21 12.132257 61.06471 107.63470
#> 2 deuteranopia 7 12.13226 21 18 7.725825 50.11732 91.56339
#> 3 protanopia 7 12.13226 21 19 2.355309 55.41310 88.34820
#> 4 tritanopia 7 12.13226 21 19 8.216194 51.53678 83.10000
The palette_check()
function returns a data.frame with 4 observations and 8 variables:
name
: original input color palette (normal), deuteranopia, protanopia, and tritanopian
: number of colorstolerance
: minimal value of the acceptable difference between the colors to distinguish between themncp
: number of color pairsndcp
: number of differentiable color pairs (color pairs with distances above the tolerance value)min_dist
: minimal distance between colorsmean_dist
: average distance between colorsmax_dist
: maximal distance between colorsAdditionally, a plot comparing the original input palette and simulations of color vision deficiencies - deuteranopia, protanopia, and tritanopia can be shown. This help to decide if the selected color palette is colorblind friendly.
For example, the above output shows that the minimal distance between colors in the input palette is about 12; however, the minimum distance between colors simulation of protanopia is only about 2. It can suggest that some colors in this palette would not be distinguishable by people with protanopia.
The palette_dist()
function calculates distances between the colors in the input palette, as well as in a simulation of the selected color vision deficiency - deuteranopia, protanopia, and tritanopia. It allows finding which colors are the most or the least similar and to compare the behavior of color palettes for different color vision deficiencies. In the original rainbow_pal
object, the closest colors were the third and the fourth one (a distance of about 12); however, the deuteranopia version has a minimal distance of 2 between the second and third color.
# normal palette_dist(rainbow_pal) #> [,1] [,2] [,3] [,4] [,5] [,6] [,7] #> [1,] NA 52.96503 85.06611 84.19100 52.61836 51.46782 39.46279 #> [2,] NA NA 29.34232 34.74051 65.68745 92.04784 80.83188 #> [3,] NA NA NA 12.13226 69.12782 81.23889 107.63470 #> [4,] NA NA NA NA 56.87222 74.19228 103.11485 #> [5,] NA NA NA NA NA 35.47760 44.20031 #> [6,] NA NA NA NA NA NA 29.94683 #> [7,] NA NA NA NA NA NA NA # deuteranopia palette_dist(rainbow_pal, cvd = "pro") #> [,1] [,2] [,3] [,4] [,5] [,6] [,7] #> [1,] NA 73.78789 76.166629 75.13412 58.36222 52.03797 50.317457 #> [2,] NA NA 2.355309 12.76751 64.91260 86.33061 84.667281 #> [3,] NA NA NA 12.48830 66.28036 88.34820 86.569277 #> [4,] NA NA NA NA 56.80334 77.98335 76.869176 #> [5,] NA NA NA NA NA 29.43598 28.504135 #> [6,] NA NA NA NA NA NA 3.553296 #> [7,] NA NA NA NA NA NA NA


We’re a design and develop team based in the Washington, DC area, with experience in small and large, residential and commercial projects. Real estate investment is a specialty of ours, so we understand how to add value to your home or business while tailoring your space to fit you. Check out our gallery for before and after shots of some of our most recent developments and feel free to reach out to us if you’re interested in working together.
Every project starts with a dream, an idea that HOD is there to help you transform into an implementable plan. We offer free consultations on how to make your dream a reality.
We offer both interior and architectural design strategies that make your home or commercial space functional and unique to you.
While the plan is in action, we keep our clients engaged by educating them on the process as it's being implemented.


Home
Services
Movie Server
Live TV
Packages
Coverage Area
About
Contact
(current)
Payment
Contact Us
Stay In Touch
with US
Let US Know , What you Feel!
Address :
Ka-71, South Area, Mohakhali, Banani, Dhaka-1212
Phone Number :
01625-553964
01302-950066
HOT-LINE : 01302-950070
Office Hours :
Saturday - Thursday 10:00 AM - 9:00 PM
Contact Us
Send A Message
If You Have any Question Feel Free to Ask..!
SEND


:: com :: sun :: star :: awt ::
|
| constants group InvalidateStyle |
- Description
- specifies how to invalidate windows.
|
| Constants |
| CHILDREN |
The child windows are invalidated, too.
|
| NOCHILDREN |
The child windows are not invalidated.
|
| NOERASE |
The invalidated area is painted with the background color/pattern.
|
| UPDATE |
The invalidated area is updated immediately.
|
| TRANSPARENT |
The parent window is invalidated, too.
|
| NOTRANSPARENT |
The parent window is not invalidated.
|
| NOCLIPCHILDREN |
The area is invalidated regardless of overlapping child windows.
|
| Constants' Details |
CHILDREN
const short CHILDREN = 1;
- Description
- The child windows are invalidated, too.
|
|
NOCHILDREN
const short NOCHILDREN = 2;
- Description
- The child windows are not invalidated.
|
|
NOERASE
const short NOERASE = 4;
- Description
- The invalidated area is painted with the background color/pattern.
|
|
UPDATE
const short UPDATE = 8;
- Description
- The invalidated area is updated immediately.
|
|
TRANSPARENT
const short TRANSPARENT = 16;
- Description
- The parent window is invalidated, too.
|
|
NOTRANSPARENT
const short NOTRANSPARENT = 32;
- Description
- The parent window is not invalidated.
|
|
NOCLIPCHILDREN
const short NOCLIPCHILDREN = 16384;
- Description
- The area is invalidated regardless of overlapping child windows.
|
|
Top of Page
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


Jobs in the oil industry, interior design, and nanotechnology have been extremely popular in 2019.
Using data from the Bureau of Labour Statistics, we compared employment numbers for industries from January 2019 to those from September 2019 (the most recent month for which data on detailed industries is available). We found the industries with the highest per cent job growth over that period.
Here are the 20 jobs that had the fastest growth so far in 2019:
20. Tax preparation services added 5,600 jobs between January and September, a 5.6% increase from the 99,800 employed in January.
19. Software publishers added 23,500 jobs between January and September, a 5.6% increase from the 418,800 employed in January.
18. Materials recovery facilities and other waste-management services added 4,100 jobs between January and September, a 5.6% increase from the 72,800 employed in January.
17. Convention and trade show organisers added 3,700 jobs between January and September, a 5.9% increase from the 63,100 employed in January.
16. Car washes added 10,400 jobs between January and September, a 6.0% increase from the 173,900 employed in January.
15. Offices of mental health practitioners added 6,500 jobs between January and September, a 6.0%% increase from the 108,500 employed in January.
14. Snack and nonalcoholic beverage bars added 44,200 jobs between January and September, a 6.0% increase from the 736,300 employed in January.
13. Tire dealers added 11,700 jobs between January and September, a 6.1% increase from the 191,900 employed in January.
12. Local messengers, delivery, and private postal services added 6,300 jobs between January and September, a 6.2% increase from the 100,900 employed in January.
11. Offices of mental health physicians added 3,800 jobs between January and September, a 6.5% increase from the 58,800 employed in January.
10. Marinas added 2,600 jobs between January and September, a 6.8% increase from the 38,000 employed in January.
9. Document preparation services added 3,400 jobs between January and September, a 7.0% increase from the 48,500 employed in January.
8. Fruit and vegetable markets added 2,600 jobs between January and September, a 7.0% increase from the 37,000 employed in January.
7. Internet publishing and broadcasting and web search portals added 19,000 jobs between January and September, a 7.4% increase from the 256,400 employed in January.
6. Heavy machinery rental and leasing added 7,300 jobs between January and September, a 7.7% increase from the 94,700 employed in January.
5. Business-to-business electronic markets added 2,500 jobs between January and September, an 8.0% increase from the 31,400 employed in January.
4. Oil and gas extraction added 13,500 jobs between January and September, a 9.0% increase from the 150,000 employed in January.
3. Interior design services added 4,100 jobs between January and September, a 9.3% increase from the 44,200 employed in January.
2. Research and development in nanotechnology added 1,900 jobs between January and September, a 9.3% increase from the 20,400 employed in January.
1. Skiing facilities added 4,500 jobs between January and September, a 9.6% increase from the 47,000 employed in January.


---
sort_order: 76
tei_id: rdx_191dd.p.idp9200256
annotation_count: 0
images:
small-thumbnail: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rffqw/mini-thumbnail/
json: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rffqw/info/
full: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rffqw/fs/
page: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rffqw/single-page/
thumbnail: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rffqw/thumbnail/
title: Page 76
number: 76
---
{% raw %}''S THE LAND-CLAIM.{% endraw %}
{% raw %}" Take care, Mauvais! An Omaha never forgives," said{% endraw %}
{% raw %}Ka-shaw with a warning calmness in her voice.{% endraw %}
{% raw %}" Omaha!" ejaculated the frantic man. " What d» I care{% endraw %}
{% raw %}for your whole beastly tribe ?  It descended upon his{% endraw %}
{% raw %}shoulder, inflicting a deep flesh wound. Maddened by the{% endraw %}
{% raw %}pain, aud invested with more than ordinary strength, the tra¬{% endraw %}
{% raw %}der succeeded in snatching the knife, stained with his own{% endraw %}
{% raw %}blood, from the strong grasp of the squaw, and plunged it in{% endraw %}
{% raw %}ber side.  said Mauvais, raising himself on one knee{% endraw %}
{% raw %}and looking at his victim, " I believe I have killed you indeed."{% endraw %}
{% raw %}His shouts gathered the people of the post about him, who,{% endraw %}
{% raw %}knowing the overbearing nature of one, and the violent temper{% endraw %}
{% raw %}of the other, were not in the least surprised at the revolting{% endraw %}
{% raw %}tragedy, though the Indians muttered threateningly among{% endraw %}
{% raw %}themselves.{% endraw %}
{% raw %}" I can't wait long on this scratch," said Mauvais to the{% endraw %}
{% raw %}post surgeon who dressed his wound. "I must go up to the{% endraw %}
{% raw %}Reserve, and explain ♦.his business to the Indians, or they'U{% endraw %}
{% raw %}be sending after my scalp."{% endraw %}
{% raw %}" You will add a salve of a few hundred dollars to each of{% endraw %}
{% raw %}the chiefs' national feelings too, I suppose ?"{% endraw %}
{% raw %}" Dieu, yes ! They'll make me pay well for it. I'm sorry{% endraw %}
{% raw %}I kiUed the squaw, for I don't like blood ; but there is no{% endraw %}
{% raw %}doubt she poisoned Miss Newcome, and she might have done{% endraw %}
{% raw %}the same for me, seeing that ]\Iiss Newcome escaped dying.{% endraw %}
{% raw %}T'lQ goiug to quit this Indian life ; I'm sick of it 1"{% endraw %}


order Form
Contact Details
Full Name
Email Address
Postal Address
Country
United States
Canada
Home Phone No.
Cell Phone No.
Skype Name
Twitter
@
Login Details
Password
Confirm Password
Order Details
Product Code
Description
Qty
Price
Total
COMP001
The Ultimate Smartphone
$399.99
$0.00
COMP002
The Ultimate Tablet
$499.99
$0.00
COMP003
The Ultimate Netbook
$299.99
$0.00
Order Total
$0.00
Payment Details
Name on Card
Credit Card No.
Expiry Date
CVV2 No.
(Three digit code at back of card)


When I'm not traveling, I'm based in Frankfurt working for Syzygy
as a Frontend Web Developer. We are a full-service digital marketing agency.
I'm passionate about tech in general, linux specifically, and many other
related and unrelated things such as web development, android, design, etc.
You can find some of my publicly available Projects and Resume at those links.


Alright, before I get into the full mind-devastation that was soon to ensue, some background on the events that preceded the trip and a little about myself. I am 26 years old, I live in California, and I started relatively later than most into drinking/drug use. I started drinking when I was 19, as well as smoking weed, and I then tried some speed, which is the worst drug on planet earth, once was more than enough for me, and I have tripped on shrooms 3 times and had a great time for each one.
  Naturally this piqued my interest. Could such a drug exist that had such obvious parity in experiences? I had to see for myself, so being the studious man I am I decided to read all about this strange plant before I bought it.
I read all the FAQS I could find to gauge the usage, settings recommended and the like. After fulling immersing myself in all the Salvia knowledge I felt confident in making a purchase of the strongest variant I could find, which is called Standardized Lab Tested 20x Extract. Personally I enjoy taking life to the farthest extremes so even though I was a first timer I had no apprehension whatsoever to going straight to the hard hitting pinnacle of Salvia.
I remember waiting for 4 days for that discreet brown padded envelope arriving at the place I was staying at for a couple months. I opened it up, observed the 1 gram of Salvia as being rather dark brownish/black in color, and it smelled like freshly cut morning dewed grass. I said 'Cool, let's do this' and I prepared my bong with the Salvia locked and loaded.  I had notified them that I was going to take something that may trip me out hard and to not worry or get concerned that I was losing my mind. I decided to make the trip alone and without a sitter, which was a colossal mistake. Bring a sitter or pay the consequences like I did.
So, I head out to the porch outside where 2 dogs are known to hang out in the backyard. I take a big hit of the Salvia, hold it in for 30 seconds, which was fairly difficult to do as I started to feel the effects creeping in about halfway through the hit. I remember blowing out the hit, then about 2 seconds later my mind and world blew apart. I remember feeling a distinct feeling of 'What the fuck?!' Then my world went into hyperspace mode WHOOOOOOOOOOOOOOOOOSH. It literally BLEW my field of vision apart and everything went a thousand miles an hour, except me.
I knew I was standing upright, but I completely forgot about everything, including the bong I was holding. I must have fell because all of the sudden I remember my mind doing backflips and somersaults, I was rolling like I was in a box that someone kept flipping end over end.
By some miracle I got myself back into the house and into my room. My room is not my room now. I am now in first person mode, like in Doom or a game similar to it. The lights are on, but nothing feels real. I feel like I am in my own cartoon. Sounds became unreal and very echoey. I said out loud, 'What the fuck?!' and then some alien voice that was somehow mine but somehow at the same time wasn't me repeated it back to me in a mocking tone. I then said 'WTF!' It repeated it back to me, as if this was its little game now and I had entered it's world. I got frustrated with this voice that sounded like it was coming through a tin can amplified through a megaphone.
Suddenly I went through the walls. I was 5000 feet away looking at myself in my room, but it was like the room had been placed directly into outer space and I was seeing the cube and myself as a tiny little figurine inside the room from far away. During this time, I remember feeling like I was flying, but then the world melted. Deja vu crept in violently. I have been here before! But how did I get here?  I tried to walk out the door into a hallway, but everytime I tried to go out it would loop the same thing over and over again, I couldn't get out. This frustrated me to no end.
Now I was annoyed and feeling rather helpless, I said 'What the Fuck' one last time.  The WTF ran from floor up the wall vertically, melted into it, and came through the ceiling and disappeared. Then the wall I was looking at became a white-shag haired carpet texture that bristled like a strong wind was gusting across it. I was beyond disbelief.
Then my brother's wife and her 2 yr old daughter come to see what's going on. They looked real and solid, but they were both smiling at me so I assumed they were running this cartoon game I was stuck in. The world around them was hyperspace blurred, but not their faces. I looked past them into the living room where the TV was on, and sure enough there was a squat 5 foot tall silhouette of a figure, not quite a man, but seemed like an imitation of one. The shadow man peeped his head around the corner, flashed two diamond eyes at me, and then chuckled and disappeared.
My brother's wife and daughter now asked me a question, but it didn't make any sense. It sounded like I was in Charlie Brown Peanuts world and they were the wah, wah, wah wah wah wah, wah noises that are heard but no real words. I said my arm feels funny and it didn't feel like my arm. It felt like stinging sandpaper. I was bleeding from the cut from my fall on the broken bong evidently, but when I looked to see the cut my arm suddenly made the cut disappear and my arm looked completely normal. I then told my brother's wife that she isn't real and nothing is real. She said no I'm real so I knew she was, so I grabbed out to her and accidentally pushed the little girl she was holding. She then told me to stop it so I said sorry and I tried to regain my composure.
Finally I started to regain some composure and the cartoon world seemed to fade out moment by moment. The total trip time was 10 minutes, and I was extremely terrified the entire time. As it turns out I did everything wrong. The setting was set up for all the wrong disturbances to occur. I fell and broke my bong so that most likely triggered a bad trip. In retrospect, I should have been alone in a quiet room with very little light or no light, and never around people who aren't understanding of drug usage.
Fast forward a week later. Trip #2 I had with my friends who never had Salvia before, and I was anxious to try it again with better company and settings. This time was MUCH more fun, but still very scary as Salvia completely destroys my mind while I am in it's world. The main difference this time was I did the 20x Salvia in the car and the world became words, and when I say words I mean that trees became an F, a curb rolled up to make a part of a U, a window dissolved and made a C, and a lawn and house merged for a K. Everything became words, even my friends.
Also the curb below my feet as I opened a car door became a Grand Canyon of impossible distance, so I wasn't about to jump outside the car. Another interesting note was that the houses and yards took on these bizarre skin. It was like I was seeing actual blood cells and plasma running through their surfaces, not unlike those science shows you see that will show under microscopic magnification what exactly happens inside blood.
In closing, I recommend that anyone with an interest in getting a completely interesting and albeit frightening trip that is unlike anything else on planet earth, try 20x Standardized Lab Tested Salvia. It will open your eyes and make you question everything in life afterwards, and everything will change as far as interpretation is concerned.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Projects
Employees
Roles
Projects
Filter:
Filter
Project Name
Start Date
Finish Date
Employees
Number of Employees
Price Calculator
01.02.2020
07.02.2021
First Name
Second Name
Role
Ivan
Ivanov
Project Manager
Aleksey
Mihno
Java Software Engineer
2
JPEG Restore
10.11.2020
25.01.2021
First Name
Second Name
Role
Alexandra
Drozd
Project Manager
Aleksey
Mihno
Java Software Engineer
2
Please confirm your action
Are you sure you want to delete the entry?


Here you can use AI technologies to assist you in CT scan analysis. Please upload a CT-scan file for analysis. Or you may use the example CT-scan file.


JavaScript Quiz
Q1. Inside which HTML element do we put the JavaScript?
<js>
<scripting>
<javascripting>
<script>
Q2. How do you create a function in JavaScript?
function myFunction()
function = myFunction()
function:myFunction()
myFunction=function()
Q3. Where is the correct place to insert a JavaScript?
The <head> section
The <body> section
Both the <head> section and the <body> section are correct
Neither the <head> section nor the <body> section are correct
Q4. The <script> tag must be where compared to the JavaScript file.
External
Internal
Both at the Internal and at the External
Neither at the Internal nor at the External
Q5. In Node.js from the following which is true about writable stream ?
Output of readable stream can be input to a writable stream.
writable stream is used for write operation.
Both of the above.
None of the above
Q6. In Nodejs how node based web servers differ from traditional web servers ?
Node based server uses a single threaded model and can serve much larger number of requests.
Node based server process request much faster than traditional server.
There is no much difference between the two.
All Of The Above
Q7. How do you call a function named "myFunction"?
myFunction()
call function myFunction()
call myFunction()
invoke myFunction()
Q8. How to write an IF statement in JavaScript?
if i = 5 then
if i = 5
if (i == 5)
if i == 5 then
Q9. How to write an IF statement for executing some code if "i" is NOT equal to 5?
if (i <> 5)
if i <> 5
if i =! 5 then
if (i != 5)
Q10. How does a WHILE loop start?
while i = 1 to 10
while (i <= 10)
while (i <= 10; i++)
while(var i=0; i<= 10; i++)
Your Score out of 10 =
Your Score out of 100 =


Please enter an email address to send password reset instruction.
Password reset instruction email has been sent. Please follow the instruction on your email.
Please enter new password
Please contact the administrator for assistance.


Thyago Volpatto
About
Porfolio
(current)
Contact
Portfolio
Project 1
Project 2
Project 3
Project 4
Project 5


ROOMMATES A film review by James Berardinelli Copyright 1995 James Berardinelli
RATING (0 TO 10): 6.3
U.S. Availability: wide release on 3/10/95 Running Length: 1:48 MPAA Classification: PG (Mature themes, language)
Starring: Peter Falk, D. B. Sweeney, Julianne Moore, Jan Rubes, Ellen Burstyn Director: Peter Yates Producers: Ted Field, Scott Kroopf, and Robert W. Cort Screenplay: Max Aple and Stephen Metcalfe Cinematography: Mike Southon Music: Elmer Bernstein Released by Hollywood Pictures
Interscope Communications, the production company behind such films as THE CUTTING EDGE and THE AIR UP THERE, has developed a reputation as a purveyor of feel-good, formula-reliant motion pictures. Interscope's latest, ROOMMATES, isn't much of a departure from their standard fare--it's basically a buddy movie/romantic comedy/family drama all rolled into one. Trying to cram so many stories into one-hundred eight minutes is an ambitious undertaking that results in sketchily-developed characters and half-realized relationships.
The most successful personality in ROOMMATES is Peter Falk's Rocky Holeczek, a grouchy old man with the "personality of a clenched fist." When we first meet Rocky in 1963 at his daughter-in-law's funeral, he's already seventy-six. To prevent his now-orphaned grandson Michael (Noah Fleiss) from being consigned to a church home, Rocky agrees to take him in. So the young boy grows into manhood during the '60s and '70s in Pittsburgh, under the watchful eye of his indefatigable guardian.
By 1983, Michael (now played by D. B. Sweeney) has matured into a twenty-five year old medical student, living and working in Columbus, Ohio. One day, he gets a call from his aunt--Rocky's apartment building is about to be torn down and he won't leave. So Michael makes the trip to Pittsburgh, and when he returns home shortly thereafter, he has a new roommate--his ninety-six year old grandfather.
Of course, Rocky has some old-fashioned ideals, as becomes apparent when Michael brings a girlfriend (Julianne Moore) home one night. There is friction between Rocky and Michael's friends, yet somehow everyone eventually comes to like the cantankerous old curmudgeon.
Falk is very convincing--and hardly recognizable--as Rocky. Makeup artist Greg Cannom has created old age applications that are far better than the norm, and the actor underneath all the latex imbues his body with a host of appropriate mannerisms.
The plotline, which largely follows a familiar course, manages a few unexpected acts of commission or omission. One "twist" that I spent the whole movie waiting for never materialized, and something that happened took me a little by surprise. In those instances, ROOMMATES seems to be struggling to escape the confines of its "comfortable" genre. Sadly, such bursts of freedom don't last long.
The persistent theme of ROOMMATES is that "reason and family [have] nothing to do with each other." Through the film's peaks and valleys, this message is always there, either being disseminated through subtle and effective touches, or repeated in absurdly heavyhanded dialogue. ROOMMATES certainly isn't as good as it might have been, but it represents a game try at a different perspective on life and love, and offers an opportunity (for those so inclined) to shed a few tears.
- James Berardinelli<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


XCWebPlan
A cross-country planning tool for glider pilots.
This is available in two versions:
- Universal:
Usable anywhere in the world. Requires the user to load a standard format waypoint file - UK Edition
- only usable for flights in the UK. Comes pre-loaded with the BGA 2016 turning point list.


# -*- coding: utf-8 -*-
"""
A class to read and write DNA sequences (or a list of characters) to a file.
In a MVC structure, this represents the Model of the data.
"""
from __future__ import absolute_import
import random
[docs]class Sequence:
"""A class to represent a sequence, sequences can be read from files or
writtes to files.
Attributes
----------
path: str
The path of the file to be read.
"""
def __init__(self: object, path: str) -> None:
"""Class constructor.
Parameters
----------
path : str
The path of the file to be read.
Returns
-------
None
A class instance.
"""
self.path = path
def __str__(self: object) -> str:
"""This method returns a string representation of the object with
print().
Returns
-------
str
A user friendly string representation.
"""
return "Hey there! I'm a Sequence object"
def __repr__(self: object) -> str:
"""This method returns a coder-friendly string representation of the
object.
Returns
-------
str
A string representation of a sequence object.
"""
return "Sequence(%s)" % self.path
[docs] def read(self: object) -> str:
"""This method is used to read the contents of the file into a python
string.
Returns
-------
str
The contents of the file, i.e. the sequence.
"""
seq = ""
with open(self.path, 'r') as file:
for line in file:
seq += line.strip("\n")
return seq
[docs] def read_bytes(self: object) -> str:
"""This method is used to read a file that has been written in bytes,
it will be useful when reading files that has been compressed with
Huffman coding.
Returns
-------
str
The contents of the file, i.e. the sequence.
"""
seq = ""
with open(self.path, 'rb') as file:
for line in file:
seq += line.decode("utf-8")
return seq
[docs] def write(self: object, content: str) -> None:
"""This method is used to write out to a file.
Parameters
----------
content : str
The contents of the file.
Returns
-------
None
Writes out to a new file.
"""
with open(self.path, 'w') as file:
file.writelines(content)
[docs] def write_bytes(self: object, content: str) -> None:
"""This method is used to write out to a new file into a bytes format,
UTF-8 encoding, useful when we want to write out the contents of the
Huffman compression to a file.
Parameters
----------
content : str
The contents of the file.
Returns
-------
None
Writes out to a new file in a bytes format.
"""
with open(self.path, 'wb') as file:
file.write(content.encode("utf-8"))
[docs] @staticmethod
def generate(length: int) -> str:
"""This method is used to generate a random DNA sequence using the
random python library.
Returns
-------
str
The random DNA sequence.
"""
return ''.join([random.choice('ATCGN') for _ in range(0, length, 1)])


Filter by price
Selected range: {{lower|currency}}-{{upper|currency}}
Filter by age
Selected range: {{lower}}-{{upper}}


Report
Date:
Name:
Age:
Gender:
History (If diabetic or visually impared):
Visual acuity (VA):
For Left Eye
For Right Eye
Line till which able to see
Line no
Line no
Eye Sight
For Left Eye
For Right Eye
Treatment Recommended:
Need to see doctor(in case of seious issues):
*
Ideal Results of reading Snellen chart
Age group
Line able to read
3-4 yrs
20/40 line
5-10 yrs
20/30 line
Older children and adults
Majority of letters on 20/20 line
NOTE:
You are advised to consult a doctor if your results do not match with the standard ones shown.


{% extends "base_generic.html" %} {% block content %}
{{ book.summary|slice:'250' }} Satisfied Clients 14
There are no Services in the Directory.


Node Children Benchmarks:
Use the iteration multiplier to increase the number of children used by each test.
Run each benchmark
times. Iteration multiplier
.
Run Benchmarks


| Package | Description |
|---|---|
| org.apache.drill.exec.physical.impl.scan.convert |
Standard type conversion tools for the case in which the input
types are the standard Java types already supported by the
ValuesWriter interface. |
| org.apache.drill.exec.physical.impl.scan.v3 |
Provides the "version 3" scan framework (which can also be thought of
as EVF version 2).
|
| org.apache.drill.exec.store.avro | |
| org.apache.drill.exec.store.easy.text.reader |
Version 3 of the text reader.
|
| org.apache.drill.exec.store.hdf5.writers | |
| org.apache.drill.exec.vector.accessor |
Provides a light-weight, simplified set of column readers and writers that
can be plugged into a variety of row-level readers and writers.
|
| org.apache.drill.exec.vector.accessor.writer |
Implementation of the vector writers.
|
| org.apache.drill.exec.vector.accessor.writer.dummy |
This package provides a "dummy" set of writers.
|
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractConvertFromString
Abstract class for string-to-something conversions.
|
class |
ConvertBooleanToString |
class |
ConvertDateToString |
class |
ConvertDecimalToString |
class |
ConvertDoubleToString |
class |
ConvertIntervalToString |
class |
ConvertIntToString |
class |
ConvertLongToString |
class |
ConvertStringToBoolean
Convert a VARCHAR column to an BIT column following the Java rules
for parsing Boolean values, then using 1 if the boolean is true, 0
if false.
|
class |
ConvertStringToDate
Convert a VARCHAR column to an DATE column following the Java rules
for parsing a date time, optionally using the formatter provided in
the column schema.
|
class |
ConvertStringToDecimal
Convert a VARCHAR column to an decimal column following the Java rules
for parsing integers (i.e.
|
class |
ConvertStringToDouble
Convert a VARCHAR column to a DOUBLE column following the Java rules
for parsing doubles (i.e.
|
class |
ConvertStringToInt
Convert a VARCHAR column to an INT column following the Java rules
for parsing integers (i.e.
|
class |
ConvertStringToInterval
Convert a VARCHAR column to an INTERVAL column following the Java rules
for parsing a period.
|
class |
ConvertStringToLong
Convert a VARCHAR column to an BIGINT column following the Java rules
for parsing longs (i.e.
|
class |
ConvertStringToTime
Convert a VARCHAR column to an TIME column following the Java rules
for parsing a date time, optionally using the formatter provided in
the column schema.
|
class |
ConvertStringToTimeStamp
Convert a VARCHAR column to an TIMESTAMP column following the Java rules
for parsing a date time, optionally using the formatter provided in
the column schema.
|
class |
ConvertTimeStampToString |
class |
ConvertTimeToString |
class |
DirectConverter
Base class for Java type-based conversion.
|
| Modifier and Type | Method and Description |
|---|---|
ValueWriter |
StandardConversions.converterFor(ScalarWriter scalarWriter,
ColumnMetadata inputSchema) |
ValueWriter |
StandardConversions.converterFor(ScalarWriter scalarWriter,
TypeProtos.MinorType inputType) |
ValueWriter |
StandardConversions.converterFor(ScalarWriter scalarWriter,
TypeProtos.MinorType inputType,
Map<String,String> columnProps)
Create a direct column converter, if necessary, for the given input type
and optional properties.
|
| Modifier and Type | Method and Description |
|---|---|
ValueWriter |
FixedReceiver.scalar(int index) |
ValueWriter |
FixedReceiver.scalar(String name) |
| Modifier and Type | Method and Description |
|---|---|
ColumnConverter.ScalarColumnConverter |
ColumnConverterFactory.buildScalar(ColumnMetadata readerSchema,
ValueWriter writer) |
| Modifier and Type | Method and Description |
|---|---|
protected abstract ValueWriter |
BaseFieldOutput.columnWriter() |
| Modifier and Type | Method and Description |
|---|---|
ValueWriter |
WriterSpec.makeWriter(String name,
TypeProtos.MinorType type,
TypeProtos.DataMode mode) |
| Modifier and Type | Interface and Description |
|---|---|
interface |
ScalarWriter
Represents a scalar value: a required column, a nullable column,
or one element within an array of scalars.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
OffsetVectorWriter
Interface for specialized operations on an offset vector.
|
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractFixedWidthWriter
Base class for writers for fixed-width vectors.
|
static class |
AbstractFixedWidthWriter.BaseFixedWidthWriter |
static class |
AbstractFixedWidthWriter.BaseIntWriter
Base class for writers that use the Java int type as their native
type.
|
class |
AbstractScalarWriter
Base class for concrete scalar column writers including actual vector
writers, and wrappers for nullable types.
|
class |
AbstractScalarWriterImpl
Column writer implementation that acts as the basis for the
generated, vector-specific implementations.
|
class |
BaseScalarWriter
Column writer implementation that acts as the basis for the
generated, vector-specific implementations.
|
class |
BaseVarWidthWriter
Base class for variable-width (VarChar, VarBinary, etc.) writers.
|
class |
BitColumnWriter
Specialized writer for bit columns.
|
class |
NullableScalarWriter |
class |
OffsetVectorWriterImpl
Specialized column writer for the (hidden) offset vector used
with variable-length or repeated vectors.
|
| Modifier and Type | Class and Description |
|---|---|
static class |
DummyArrayWriter.DummyOffsetVectorWriter |
class |
DummyScalarWriter
Represents a non-projected column.
|
Copyright © 2021 The Apache Software Foundation. All rights reserved.


|
| pure integer function | lists::list_size (me) |
| | Returns the total number of items in the List. More...
|
| |
| integer function | lists::push_back (me, newitem) |
| | Subroutine to append an element at the back of the list. More...
|
| |
| class(*) function, allocatable | lists::pop_back (me) |
| | Function to extract the last item of List. More...
|
| |
| class(*) function, pointer | lists::item_at (me, Index) |
| | Returns a pointer to the item with the requested index (1-based) Pointer will not be associated in case of an exception. More...
|
| |
| class(*) function, allocatable | lists::item_front (me) |
| | Returns the item with the index=1. More...
|
| |
| class(*) function, allocatable | lists::item_back (me) |
| | Returns the last item in List. More...
|
| |
| subroutine | lists::item_insert (me, pos, NewItem) |
| | Inserts an item at the given position. More...
|
| |
| subroutine | lists::item_erase (me, pos) |
| | Erase an item at the given position. More...
|
| |
| subroutine | lists::create_newslots (me, NumSlots) |
| | Subroutine to allocate storage for new slots. More...
|
| |
| subroutine | lists::assignlist (lhs, rhs) |
| | Subroutine for List assignment operator. More...
|
| |
| subroutine | lists::clear (me) |
| | Clear the contents of List. More...
|
| |
| subroutine | lists::shrinktofit (me) |
| | Free up unused allocated memory and make List capacity equal to its size. More...
|
| |
| subroutine | lists::destroy (me) |
| | Destructor. More...
|
| |
| elemental subroutine | lists::add_listitem (me, item) |
| |
| subroutine | lists::del_listitem (me) |
| |
| pure elemental logical function | lists::isvalid_listitem (me) |
| |


Lately I’ve been trying to wrap my head how to effectively deal with textures in Vulkan. I don’t want any descriptor sets that need to be bound on a per object basis, which means that just sticking each texture into it’s own set binding isn’t going to work. Instead, thanks to the Vulkan Fast Paths presentation from AMD, I’ve been looking into using a global array of textures that stores all my textures in a descriptor set that I can bind at the beginning of the frame.
The AMD presentation doesn’t actually cover how to set up an array of textures in Vulkan, and I couldn’t find a good explanation of how to do that anywhere online, so now that I’ve figured it out I want to post a quick tutorial on here about it for the next person who gets stuck. I’ll go more in depth about how this array fits into my material system in a later post, but for now I just want to cover the nuts and bolts of setting up a shader to use an array of texture.
One more thing to note before I get started: If you’re looking for a way to work with images of the same size, Sascha Willems has a great example of using a sampler2DArray in his Vulkan Examples Project. The advantage of using an array of textures instead of something like a sampler2DArray is that the array of textures approach supports storing multiple image sizes in the same array by default. I don’t know how much (if any) of a performance penalty you pay for using an array of textures over a sampler2DArray.
With all that said, the goal of this post is going to be to walk through how to set up a Vulkan app so that you can use a shader like this one:
#version 450 core
#extension GL_ARB_separate_shader_objects : enable
layout(set = 0, binding = 0) uniform sampler samp;
layout(set = 0, binding = 1) uniform texture2D textures[8];
layout(push_constant) uniform PER_OBJECT
{
int imgIdx;
}pc;
layout(location = 0) out vec4 outColor;
layout(location = 0) in vec2 fragUV;
void main()
{
outColor = texture(sampler2D(textures[pc.imgIdx], samp), fragUV);
}
I’ve put all the code for this up in an example project on github, which renders a full screen quad with the above shader, and changes what image is displayed by updated the imgIdx variable in the push constant, so feel free to grab that and take a look. I’m going to deep dive into parts of that code for the remainder of this post.
Setting up a descriptor set binding to work with an array of textures looks very similar to setting it up to work with a single texture. The main difference is the “decsriptorCount” variable on the VkDescriptorSetLayoutBinding structure: with a single texture you’d set this to 1, whereas with an array of textures, you set that variable to the number of elements in your array. For the above shader, the layout binding structure for the texture array might look like this:
VkDescriptorSetLayoutBinding layoutBinding = {};
layoutBinding.descriptorCount = 8;
layoutBinding.binding = 1;
layoutBinding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
layoutBinding.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
layoutBinding.pImmutableSamplers = 0;
In hindsight, this is pretty obvious, but it took me awhile to realize that “descriptorCount” was the right spot for this information.
Once the above is set up, you just create your DescriptorSet (and DescriptorSetLayout) like you would with any other layout binding types. The demo app I posted has a working example of all of that.
Similar to the above, writing a texture array to a descriptor set is much more straightforward than it seems at first. The key is to have your VkDescriptorImageInfo structs already in an array. If you aren’t using a combined image sampler, you don’t actually need to fill in the sampler value on these structs. In my demo project, I set up this array like so:
VkDescriptorImageInfo descriptorImageInfos[TEXTURE_ARRAY_SIZE];
for (uint32_t i = 0; i < TEXTURE_ARRAY_SIZE; ++i)
{
demoData.descriptorImageInfos[i].sampler = nullptr;
demoData.descriptorImageInfos[i].imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
demoData.descriptorImageInfos[i].imageView = demoData.textures[i].view;
}
In a non contrived application, you likely won’t have all the imageViews already in a neat little array like this, but it doesn’t matter how those image views are laid out, as long as the DescriptorImageInfo structs you use are in an array of some kind.
Once you’ve set up those structs, setting up the rest of the WriteDescriptorSet for the array of textures is very simple:
VkWriteDescriptorSet setWrites[2];
setWrites[1] = {};
setWrites[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
setWrites[1].dstBinding = 1;
setWrites[1].dstArrayElement = 0;
setWrites[1].descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
setWrites[1].descriptorCount = TEXTURE_ARRAY_SIZE;
setWrites[1].pBufferInfo = 0;
setWrites[1].dstSet = demoData.descriptorSet;
setWrites[1].pImageInfo = demoData.descriptorImageInfos;
Note that just like earlier with the DescriptorSetLayoutBinding, the descriptorCount variable here is where you need to specify the length of your array.
If you’re using the standable glslangvalidator tool from the glslang project, you’re going to run into some issues if you try to make a large array of textures (ie / more than 80). If you do that, you’ll see an error message like the following:
‘binding’ : sampler binding not less than gl_MaxCombinedTextureImageUnits (using array)
This was a problem for me because I want to keep all the textures used in any given frame bound, so my initial array size was set to 4096 (with all of those image views defaulting to the same image). As you probably guessed from the “gl_” prefix in the error being generated, this error doesn’t actually apply to Vulkan shaders, so if you’re sure that your shader will never be used by OpenGL, you need to tell the compiler not to worry about gl_MaxCombinedTextureImageUnits.
To do this, you need to create a device capabilities config file, like so:
"glslangvalidator -c > myconfig.config"
It’s important that your file uses the .config extension, because that’s the extension that glslangvalidator will look for in it’s argument list to know if an alternate config file is being provided.
Once you have this config file, all you need to do is open it up in your favourite text editor and look for the “MaxCombinedTextureImageUnits” line:
MaxVertexAttribs 64
MaxVertexUniformComponents 4096
MaxVaryingFloats 64
MaxVertexTextureImageUnits 32
MaxCombinedTextureImageUnits 80
MaxTextureImageUnits 32
Change that 80 to a really big number and you’re on your way. One thing to note is that I ran into some issues when I did this originally because I generated the config file using powershell, which defaults to writing text files out using UCS2-LE text encoding. You don’t want that. Make sure that your cconfig file is set to a sane encoding, like UTF-8, otherwise the validator won’t be able to read the file back in properly.
Once you have your properly encoded, lots of textures using config file ready you are good to recompile your shader. This time, invoke the compiler like so:
glslangvalidator -V myfile.frag myconf.conf
As long as your config file uses the .conf extension, that should be all you need to get it to stop complaining and do its job.
When all the above is done, you should be able to simply pass your array index via push constants the same way you’d pass anything else via push constants and be on your way. If anything above was unclear, let me point you again in the direction of the demo project on github, which will provide you with a relatively small working example.
Hopefully this was helpful! I realize it’s a short post, and there’s nothing here thats groundbreaking, but (imo), Vulkan needs more easily digestible tutorial content, so here this post is. In any case, if you want to say hi, send a message to @khalladay on Twitter or on Mastodon. Thanks for reading!


The First Time I Knew Fear...
| DOSE: |
2 tablets |
oral |
MDMA |
(pill / tablet) |
My girlfriend and I smoke pot fairly regularly, but had never tried any other drugs. One night we were visiting with a friend of hers who's really into the rave scene. She was trying to unload some extra ecstasy she had. We decided to buy it and give it a whirl.
We took the little white pills with the Nike logo on them about two weeks later. After about half an hour I decided that ecstasy didn't do anything at all and was very disappointed. Within five minutes after that I felt like I was twelve feet tall and our tiny little apartment was about the size of a football stadium. Lights got much brighter and I started hearing little noises everywhere.
Within a few minutes both of us were absolutely terrified of EVERYTHING. I didn't want to move because I thought I would fall. My girlfriend didn't want to be away from me, but she was scared of me touching her. We managed to talk each other through moving to the bed and laying down. We got into the spooning position and both of us were too frightened to move even the slightest bit for over an hour. If she hadn't been there to talk to me and make me feel more comfortable, I think I would have completely lost it.
Eventually, about two hours after we had taken the pills, the fear started to lift and we were able to move again. We have no idea how it happened, but a few minutes later we had absolutely incredible sex. We decided to go to bed.
The Ecstasy experience changed my view of the world for weeks. Things looked a little different and I noticed tiny details I would never have seen before. To this day, several months later, I still occassionally notice and effect on my perception.
All in all, the experience was one of the worst of my life. I think we may have just done it in the wrong circumstances. The girl who sold them to us later told us that it's best to do it the first time with someone who's familiar with it. She said two Ecstasy virgins can just freak each other out like we did.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


| new_function {rlang} | R Documentation |
This constructs a new function given its three components: list of arguments, body code and parent environment.
new_function(args, body, env = caller_env())
args |
A named list or pairlist of default arguments. Note
that if you want arguments that don't have defaults, you'll need
to use the special function |
body |
A language object representing the code inside the
function. Usually this will be most easily generated with
|
env |
The parent environment of the function, defaults to the
calling environment of |
f <- function() letters g <- new_function(NULL, quote(letters)) identical(f, g) # Pass a list or pairlist of named arguments to create a function # with parameters. The name becomes the parameter name and the # argument the default value for this parameter: new_function(list(x = 10), quote(x)) new_function(pairlist2(x = 10), quote(x)) # Use `exprs()` to create quoted defaults. Compare: new_function(pairlist2(x = 5 + 5), quote(x)) new_function(exprs(x = 5 + 5), quote(x)) # Pass empty arguments to omit defaults. `list()` doesn't allow # empty arguments but `pairlist2()` does: new_function(pairlist2(x = , y = 5 + 5), quote(x + y)) new_function(exprs(x = , y = 5 + 5), quote(x + y))


|
Assimp
5.0.1, master @ cd42b955
|
Defines a set of common scene metadata keys. More...
Macros | |
| #define | AI_COMMONMETADATA_H_INC |
| #define | AI_METADATA_SOURCE_COPYRIGHT "SourceAsset_Copyright" |
| Scene metadata holding the source asset copyright statement, if available. More... | |
| #define | AI_METADATA_SOURCE_FORMAT "SourceAsset_Format" |
| Scene metadata holding the name of the importer which loaded the source asset. More... | |
| #define | AI_METADATA_SOURCE_FORMAT_VERSION "SourceAsset_FormatVersion" |
| Scene metadata holding the version of the source asset as a string, if available. More... | |
| #define | AI_METADATA_SOURCE_GENERATOR "SourceAsset_Generator" |
| Scene metadata holding the name of the software which generated the source asset, if available. More... | |
Defines a set of common scene metadata keys.
| #define AI_COMMONMETADATA_H_INC |
| #define AI_METADATA_SOURCE_COPYRIGHT "SourceAsset_Copyright" |
Scene metadata holding the source asset copyright statement, if available.
Not all formats add this metadata.
| #define AI_METADATA_SOURCE_FORMAT "SourceAsset_Format" |
Scene metadata holding the name of the importer which loaded the source asset.
This is always present if the scene was created from an imported asset.
| #define AI_METADATA_SOURCE_FORMAT_VERSION "SourceAsset_FormatVersion" |
Scene metadata holding the version of the source asset as a string, if available.
Not all formats add this metadata.
| #define AI_METADATA_SOURCE_GENERATOR "SourceAsset_Generator" |
Scene metadata holding the name of the software which generated the source asset, if available.
Not all formats add this metadata.


This is a project by a group of students enrolled in Communications Lab (Summer). As part of the assignment, we were required to produce a video in thirty minutes and individually make a website by implementing the skills we have learned in this class. Our aim was to make a video to encourage people towards the ways they can spend their quarantine during COVID productive.


In URNDR you are doing more than drawing on 3D model. You are giving each 3D model an tailored appearance with your own tastes and perspectives.
For so long we rely too much on render engines to tell us what 3D stuffs SHOULD look like. Now it is time for you to decide what you want to see, with your own hands (or mouse, of course).
Because you should be the one who tell computer what to draw,
URNDR provides tools to achieve so easier than before. Instead of giving precise controls on pixels and dictate hyper-detailed results like normal computer renderings jobs do. Here we aim to draw simple shapes, contours, symbols that revolves around the data.
These can be almost random, but truly unique. Combines with CG animation power and computer's playful ability on "making sense of literally anything". Animating can be a fascinating experience.
mreceive('Render','GIF',119)
STYLE.color