-
Notifications
You must be signed in to change notification settings - Fork 15
Home
Aditya Vaidyam edited this page Jan 14, 2019
·
2 revisions
Here lies some form of documentation and reference on the internal workings of Core Animation.framework
and DIYAnimation.framework
.
Render
Object -> simple refcounting object model
Array -> simple array wrapper for ^ objects
Vector -> float array with n elements
Encoder -> Codable-like
Decoder -> Codable-like
Message -> Wire message (i.e. XPC)
Shmem -> mach_vm_allocate + mach_vm_region + mach_make_memory_entry_64 + mach_vm_map/remap
ShmemBitmap -> unrelated
Image -> Shmem + metadata (colorspace, etc) wrapper
ImageProvider -> requires context command-based sync
ImageQueue -> Shmem + object lookup + server->client ping update()
ShapeImage -> Shmem + CGPath->scanconvert
TiledShapeImage -> same as ^ but tiled
Texture -> virtual class for:
TiledTexture -> used by ImageProvider?
Surface -> IOSurface wrapper
PixelBuffer -> Shmem + CVPixelBuffer metadata
Filter -> cifilter + color map filters
Transition -> ...
Layer -> ...
LayerSubclass -> ...
GradientLayer -> ...
ShapeLayer -> ...
ReplicatorLayer -> ...
EmitterLayer -> ...
EmitterCell -> ...
LayerHost -> ...
Animation -> ...
BasicAnimation -> ...
PropertyAnimation -> ...
KeyframeAnimation -> ...
TransitionAnimation -> ...
GroupAnimation -> ...
MatchMoveAnimation -> ...
Function -> ...
NamedFunction -> ...
Timing -> maps timing back and forth
Interpolator -> basically unused?
AnimationEvaluator -> first pass, second pass, copy transition ???
Path -> CGPath wrapper
Pattern -> CGPattern + CGColorSpace via raw Shmem
TileCache -> used by OGL for tiled render
LayerNode -> OGL rendering intermediate (w/ LocalState + GlobalState)
Handle -> wrapper for transaction commands (+/- anims, set layer, etc)
Proxy -> proxy for context object via lookup()
Context -> layer client for the server
Update -> server render request
Server -> server thread + port + messaging + protect server vm space
OGL
Context -> virtual for v
SWContext -> software renderer
GLContext -> base GL renderer
EAGLContext -> mobile
CGLContext -> desktop
MetalContext -> metal renderer
ImagingNode -> virtual for v
QuadNode -> simple quad
LayerNode -> ...
MaskNode -> ...
ShadowNode -> ...
CompositeNode -> composite filter
BackdropNode -> i.e contents blur
CacheNode -> rasterize stuff
FilterNode -> bg + layer filters
CombineNode -> ???
RenderSurface -> new surface to render to
Layer -> ???
GState -> rendering state
ContentsGeometry -> ???
TiledImageGeometry -> ???