# query() fields

## Concrete objects

line object fields
field | type | description
--- | --- | ---
(common) |  | common object fields are available
stroke |  | pen fields used for object stroke; e.g. .stroke is the stroke pen name, .stroke.color is stroke pen color
x1 | coord | start point x coord
y1 | coord | start point y coord
x2 | coord | end point x coord
y2 | coord | end point y coord
length | coord | calculated length
length2 | double | square of calculated length (cheaper to calculate)
area | double | "ink quantity": approx. area of the line as rendered [coord2]

arc object fields
field | type | description
--- | --- | ---
(common) |  | common object fields are available
stroke |  | pen fields used for object stroke; e.g. .stroke is the stroke pen name, .stroke.color is stroke pen color
start | double | start angle [degrees]
delta | double | angle span [degrees]
x or cx | coord | arc center x coord
y or cy | coord | arc center y coord
r | coord | arc radius
length | coord | calculated length
length2 | double | square of calculated length (cheaper to calculate)
area | double | "ink quantity": approx. area of the arc as rendered [coord2]

text object fields
field | type | description
--- | --- | ---
(common) |  | common object fields are available
x or x1 | coord | placement box bottom left
y or y1 | coord | placement box bottom left
x2 | coord | placement box top right (also used for determining text height)
y2 | coord | placement box top right (also used for determining text height)
rotation | double | in degrees
string | str | text string as specified by the user (may be a dyntext template)
render | str | as rendered currently (with dyntext template executed)
dyntext | int | 1 if text is dyntext templated, 0 otherwise
has_bbox | int | 1 if text is bbox-specified, 0 if height-specified
halign | int | horizontal alignment ID

conn object fields
field | type | description
--- | --- | ---
(common) |  | common object fields are available
conn | list | all objects that are connected by this conn object

polygon object fields
field | type | description
--- | --- | ---
(common) |  | common object fields are available
stroke |  | pen fields used for object stroke; e.g. .stroke is the stroke pen name, .stroke.color is stroke pen color
fill |  | pen fields used for object fill; e.g. .fill is the fill pen name, .fill.color is fill pen color
points | int | number of corners
area | double | "ink quantity": area of the polygon as rendered [coord2]

group object fields
field | type | description
--- | --- | ---
(common) |  | common object fields are available
x | coord | origin (placement) coord
y | coord | origin (placement) coord
rotation | double | rotation around origin, in degrees
mirx | int | 1 if group is horizontally mirrored, 0 otherwise
miry | int | 1 if group is vertically mirrored, 0 otherwise
area | double | bbox area of the group as rendered [coord2]

## Common concrete object fields and types

types
type ID | type name
--- | ---
1 | LINE
2 | ARC
3 | POLY
4 | TEXT
5 | BITMAP
6 | CONN
7 | GRP
8 | GRP_REF

horizontal alignment IDs
halign ID | alignment name
--- | ---
0 | left
1 | center
2 | right
3 | word justify
4 | justify

common fields
field | type | description
--- | --- | ---
ID | int | object's oid
level | int | which level of the hierarchy the object is on; level 0 is the direct group of the sheet; level 1 is an object placed on the sheet
bbox.x1 | coord | object's bounding box, leftmost X coordinate
bbox.y1 | coord | object's bounding box, bottom Y coordinate
bbox.x2 | coord | object's bounding box, rightmost X coordinate
bbox.y2 | coord | object's bounding box, top Y coordinate
bbox.width | coord | object's bounding box, horizontal size
bbox.height | coord | object's bounding box, vertical size
type | int | object type ID
selected | int | 1 if object is selected, else 0
locked | int | 1 if object is explicitly locked (lock tool), else 0
anylocked | int | 1 if the object is locked in any way (parent is locked or parent is an atomic group, e.g. symbol and object is not a floater)
floater | int | 1 if object is a floater, else 0
parent | obj | object's parent group
displayer | int | display layer ID the object is rendered on
displayer_name | string | display layer name the object is rendered on
conn | list | list of objects the current object is connected to via a conn object

pen fields
field | type | description
--- | --- | ---
| str | without futher fields appended, evaluates to the name of the pen
shape | str | round or square
is_round | int | 1 if shape is round, else 0
size | coord | pen diameter if shape is round, side length if shape is square
color | str | in #rrggbb format
dash | int | dash pattern (see design doc)
dash_period | coord | dash period (see design doc)
font_height | coord | for non-bbox specified text rendered with this pen
font_family | str | hint for font selection
font_style | str | hint for font selection