page.corvus.drawing
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"ellipse": {
"description": "An ellipse or circle (set rx == ry for a circle)",
"properties": {
"blockId": {
"description": "The AT-URI of this block record",
"format": "at-uri",
"type": "string"
},
"cx": {
"description": "Center X coordinate in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"cy": {
"description": "Center Y coordinate in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"fill": {
"description": "Fill style as a CSS color string; omitted or empty for no fill",
"ref": "page.corvus.core#register",
"type": "ref"
},
"opacity": {
"description": "Opacity from 0 to 1 (defaults to 1)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"rotation": {
"description": "Rotation in radians around (cx, cy) (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"rx": {
"description": "X radius in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"ry": {
"description": "Y radius in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"stroke": {
"description": "Stroke style as a CSS color string; omitted or empty for no stroke",
"ref": "page.corvus.core#register",
"type": "ref"
},
"strokeWidth": {
"description": "Stroke width in pixels (defaults to 1)",
"ref": "page.corvus.core#register",
"type": "ref"
}
},
"required": [
"blockId"
],
"type": "object"
},
"group": {
"description": "A named collection of shape block ids — a tag that lets a set of shapes be referred to together (selected, named, toggled). Membership is order-independent; z-order comes from #main.shapes",
"properties": {
"blockId": {
"description": "The AT-URI of this block record",
"format": "at-uri",
"type": "string"
},
"name": {
"description": "The display name of the group",
"ref": "page.corvus.core#register",
"type": "ref"
},
"shapes": {
"description": "The set of member shape block ids",
"ref": "page.corvus.core#set",
"type": "ref"
}
},
"required": [
"blockId"
],
"type": "object"
},
"image": {
"description": "A placed image — positions and sizes a page.corvus.contentBlocks#image within the drawing. The image asset itself lives in the referenced block (its blob, alt text, and aspect ratio); this variant only carries the placement",
"properties": {
"blockId": {
"description": "The AT-URI of this block record",
"format": "at-uri",
"type": "string"
},
"height": {
"description": "Height in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"image": {
"description": "Register whose value is the at-uri of the page.corvus.contentBlocks#image block to render",
"ref": "page.corvus.core#register",
"type": "ref"
},
"opacity": {
"description": "Opacity from 0 to 1 (defaults to 1)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"rotation": {
"description": "Rotation in radians around the image's center (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"width": {
"description": "Width in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"x": {
"description": "Top-left X coordinate in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"y": {
"description": "Top-left Y coordinate in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
}
},
"required": [
"blockId"
],
"type": "object"
},
"main": {
"description": "A drawing canvas containing an ordered sequence of shapes",
"properties": {
"background": {
"description": "The canvas background as a CSS color string; omitted or empty for transparent",
"ref": "page.corvus.core#register",
"type": "ref"
},
"blockId": {
"description": "The AT-URI of this block record",
"format": "at-uri",
"type": "string"
},
"height": {
"description": "The canvas height in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"shapes": {
"description": "The shapes in the drawing as a sequence of shape block ids in z-order (later = on top)",
"ref": "page.corvus.core#sequence",
"type": "ref"
},
"title": {
"description": "The name of the drawing",
"ref": "page.corvus.core#sequence",
"type": "ref"
},
"width": {
"description": "The canvas width in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
}
},
"required": [
"blockId"
],
"type": "object"
},
"path": {
"description": "A vector path — a sequence of commands that map directly to canvas path operations. Commands are inline values in the sequence and have no stable identity across edits (editing a command means deleting and re-inserting it). Use #stroke instead for freehand brush traces.",
"properties": {
"blockId": {
"description": "The AT-URI of this block record",
"format": "at-uri",
"type": "string"
},
"commands": {
"description": "The path commands as an RGA sequence of #pathCommand objects",
"ref": "page.corvus.core#sequence",
"type": "ref"
},
"fill": {
"description": "Fill style as a CSS color string; omitted or empty for no fill",
"ref": "page.corvus.core#register",
"type": "ref"
},
"opacity": {
"description": "Opacity from 0 to 1 (defaults to 1)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"rotation": {
"description": "Rotation in radians applied around (x, y) at render time (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"stroke": {
"description": "Stroke style as a CSS color string; omitted or empty for no stroke",
"ref": "page.corvus.core#register",
"type": "ref"
},
"strokeWidth": {
"description": "Stroke width in pixels (defaults to 1)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"x": {
"description": "Origin X offset applied to the path at render time (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"y": {
"description": "Origin Y offset applied to the path at render time (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
}
},
"required": [
"blockId"
],
"type": "object"
},
"pathCommand": {
"description": "A single path command. Used inline as a value in a #path.commands sequence — NOT its own block, NOT addressable, no stable identity across edits",
"properties": {
"coords": {
"description": "Coordinate arguments; interpretation depends on op. Angles for the A command are encoded in milliradians (0 to 2π × 1000) so they fit an integer",
"items": {
"type": "integer"
},
"type": "array"
},
"op": {
"description": "M=moveTo (x,y); L=lineTo (x,y); C=bezierCurveTo (cp1x,cp1y,cp2x,cp2y,x,y); Q=quadraticCurveTo (cpx,cpy,x,y); A=arc (cx,cy,r,startAngle,endAngle,counterclockwise); Z=closePath (no coords)",
"knownValues": [
"M",
"L",
"C",
"Q",
"A",
"Z"
],
"type": "string"
}
},
"required": [
"op"
],
"type": "object"
},
"rect": {
"description": "An axis-aligned rectangle, optionally rotated around its center",
"properties": {
"blockId": {
"description": "The AT-URI of this block record",
"format": "at-uri",
"type": "string"
},
"cornerRadius": {
"description": "Corner radius in pixels (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"fill": {
"description": "Fill style as a CSS color string; omitted or empty for no fill",
"ref": "page.corvus.core#register",
"type": "ref"
},
"height": {
"description": "Height in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"opacity": {
"description": "Opacity from 0 to 1 (defaults to 1)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"rotation": {
"description": "Rotation in radians around the rect's center (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"stroke": {
"description": "Stroke style as a CSS color string; omitted or empty for no stroke",
"ref": "page.corvus.core#register",
"type": "ref"
},
"strokeWidth": {
"description": "Stroke width in pixels (defaults to 1)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"width": {
"description": "Width in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"x": {
"description": "Top-left X coordinate in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"y": {
"description": "Top-left Y coordinate in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
}
},
"required": [
"blockId"
],
"type": "object"
},
"stroke": {
"description": "A freehand stroke — a brush trace captured atomically. Sample points are written once as a single register value; individual points are not edited collaboratively. To redo the stroke, replace the points register",
"properties": {
"blockId": {
"description": "The AT-URI of this block record",
"format": "at-uri",
"type": "string"
},
"color": {
"description": "Brush color as a CSS color string",
"ref": "page.corvus.core#register",
"type": "ref"
},
"opacity": {
"description": "Opacity from 0 to 1 (defaults to 1)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"points": {
"description": "The stroke's samples as a single register whose value is an array of #strokePoint objects",
"ref": "page.corvus.core#register",
"type": "ref"
},
"rotation": {
"description": "Rotation in radians applied around (x, y) at render time (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"width": {
"description": "Brush width in pixels (base width if pressure modulates)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"x": {
"description": "Origin X offset applied to the stroke at render time (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"y": {
"description": "Origin Y offset applied to the stroke at render time (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
}
},
"required": [
"blockId"
],
"type": "object"
},
"strokePoint": {
"description": "A single sample within a #stroke. Used inline as an element of #stroke.points",
"properties": {
"pressure": {
"description": "Optional pen pressure, 0-255 (0 = lift, 255 = max)",
"maximum": 255,
"minimum": 0,
"type": "integer"
},
"x": {
"description": "X coordinate in pixels",
"type": "integer"
},
"y": {
"description": "Y coordinate in pixels",
"type": "integer"
}
},
"required": [
"x",
"y"
],
"type": "object"
},
"text": {
"description": "A text label rendered with canvas fillText/strokeText",
"properties": {
"align": {
"description": "Horizontal alignment relative to (x, y) — 'left', 'center', or 'right' (defaults to 'left')",
"ref": "page.corvus.core#register",
"type": "ref"
},
"blockId": {
"description": "The AT-URI of this block record",
"format": "at-uri",
"type": "string"
},
"fill": {
"description": "Fill style as a CSS color string; omitted or empty for no fill",
"ref": "page.corvus.core#register",
"type": "ref"
},
"fontFamily": {
"description": "Font family as a CSS font-family string",
"ref": "page.corvus.core#register",
"type": "ref"
},
"fontSize": {
"description": "Font size in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"opacity": {
"description": "Opacity from 0 to 1 (defaults to 1)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"rotation": {
"description": "Rotation in radians around (x, y) (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"stroke": {
"description": "Stroke style as a CSS color string; omitted or empty for no stroke",
"ref": "page.corvus.core#register",
"type": "ref"
},
"strokeWidth": {
"description": "Stroke width in pixels (defaults to 0)",
"ref": "page.corvus.core#register",
"type": "ref"
},
"text": {
"description": "The text content as a text sequence (editable per-character)",
"ref": "page.corvus.core#sequence",
"type": "ref"
},
"weight": {
"description": "Font weight as a CSS font-weight value",
"ref": "page.corvus.core#register",
"type": "ref"
},
"x": {
"description": "Anchor X coordinate in pixels",
"ref": "page.corvus.core#register",
"type": "ref"
},
"y": {
"description": "Anchor Y coordinate in pixels (text baseline)",
"ref": "page.corvus.core#register",
"type": "ref"
}
},
"required": [
"blockId"
],
"type": "object"
}
},
"description": "A drawing block — a vector image composed of shapes that render onto an HTML canvas 2D context. The drawing's `shapes` sequence holds shape block ids in z-order (later = on top). Each shape variant below is its own block. Coordinates are integer pixels; an editor that needs sub-pixel precision can scale its working coord space.",
"id": "page.corvus.drawing",
"lexicon": 1
}
Metadata
- DID
-
did:plc:3qc4cbzcriye72qqqodeda26 - CID
-
bafyreif2ieovrba6c3kv32j4ww76lipmntynin64j5womf35encoq7bfqu - Indexed At
- 2026-05-21 03:27 UTC
- AT-URI
-
at://did:plc:3qc4cbzcriye72qqqodeda26/com.atproto.lexicon.schema/page.corvus.drawing
Referenced Schemas (3)
- page.corvus.core#register
- page.corvus.core#sequence
- page.corvus.core#set
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
pub.leaflet.blocks.drawing object
Freehand ink strokes. The view box is the area of drawing space the block shows, scaled to the block's width; strokes may reach past it.