Previous topic

Data types

Next topic

Interface types

This Page

Fundamental data typesΒΆ

The following defined types are used in the subsequent sections. Implementors should treat these sizes as minimium requirements.


Roger Leigh Depending upon how we wish to persue interoperability between implementations, these may be required to be exact. Using plain text would mitigate this to an extent.

Raw Primitives
Name BinType Description
scijava.roi.types.AffineTransform1D double[4] An affine transform in 1D described by a transformation matrix and 1D shape to transform
scijava.roi.types.AffineTransform2D double[9] An affine transform in 2D described by a transformation matrix and 2D shape to transform
scijava.roi.types.AffineTransform3D double[16] An affine transform in 3D described by a transformation matrix and 3D shape to transform
scijava.roi.types.AffineTransformnD TODO An affine transform in nD described by a transformation matrix and nD shape to transform
scijava.roi.types.Color double[4] Color in RGBA (0,1) range
scijava.roi.types.Count uint32_t Number of objects
scijava.roi.types.Index uint32_t Index into an array
scijava.roi.types.Int16 int16_t Signed 16-bit integer
scijava.roi.types.Int32 int32_t Signed 32-bit integer
scijava.roi.types.Int64 int64_t Signed 64-bit integer
scijava.roi.types.Int8 int8_t Signed 8-bit integer
scijava.roi.types.TypeID uint16_t Numeric shape identifier
scijava.roi.types.UInt16 uint16_t Unsigned 16-bit integer
scijava.roi.types.UInt32 uint32_t Unsigned 32-bit integer
scijava.roi.types.UInt64 uint64_t Unsigned 64-bit integer
scijava.roi.types.UInt8 uint8_t Unsigned 8-bit integer
scijava.roi.types.Value double Numerical value
scijava.roi.types.Vector1D double[1] Vector in 1D
scijava.roi.types.Vector2D double[2] Vector in 2D
scijava.roi.types.Vector3D double[3] Vector in 3D
scijava.roi.types.VectornD TODO Vector in nD
scijava.roi.types.Vertex1D double[1] Vertex in 1D
scijava.roi.types.Vertex2D double[2] Vertex in 2D
scijava.roi.types.Vertex3D double[3] Vertex in 3D
scijava.roi.types.VertexnD TODO Vertex in nD
C++ Primitives
Name C++ Type
scijava.roi.types.AffineTransform1D glm::detail::tmat2x2<double>
scijava.roi.types.AffineTransform2D glm::detail::tmat3x3<double>
scijava.roi.types.AffineTransform3D glm::detail::tmat4x4<double>
scijava.roi.types.AffineTransformnD TODO
scijava.roi.types.Color double[4]
scijava.roi.types.Count uint32_t
scijava.roi.types.Index uint32_t
scijava.roi.types.Int16 int16_t
scijava.roi.types.Int32 int32_t
scijava.roi.types.Int64 int64_t
scijava.roi.types.Int8 int8_t
scijava.roi.types.String std::string
scijava.roi.types.TypeID uint16_t
scijava.roi.types.UInt16 uint16_t
scijava.roi.types.UInt32 uint32_t
scijava.roi.types.UInt64 uint64_t
scijava.roi.types.UInt8 uint8_t
scijava.roi.types.Value double
scijava.roi.types.Vector1D double
scijava.roi.types.Vector2D glm::detail::tvec2<double>
scijava.roi.types.Vector3D glm::detail::tvec3<double>
scijava.roi.types.VectornD TODO
scijava.roi.types.Vertex1D double
scijava.roi.types.Vertex2D glm::detail::tvec2<double>
scijava.roi.types.Vertex3D glm::detail::tvec2<double>
scijava.roi.types.VertexnD TODO
Java Primitives
Name Java Type
scijava.roi.types.Color double[4]
scijava.roi.types.Count int
scijava.roi.types.Float32 float
scijava.roi.types.Float64 double
scijava.roi.types.Index int
scijava.roi.types.Int16 short
scijava.roi.types.Int32 int
scijava.roi.types.Int64 long
scijava.roi.types.Int8 byte
scijava.roi.types.String String
scijava.roi.types.TypeID short
scijava.roi.types.UInt16 int
scijava.roi.types.UInt32 long
scijava.roi.types.UInt64 java.math.BigInteger
scijava.roi.types.UInt8 short
scijava.roi.types.Value double
Shape state/attributes
Property Type Description
DIMORDER scijava.roi.types.Array<Index> Dimension order
TRANSFORM Affine3D Affine transformation
BOUNDS RAlignedCuboid1 Bounding cuboid
LINECOL Colour Line (and surface) colour
FILLCOL Colour Fill colour
TEXTCOL Colour Text colour
DRAWWIDTH double Width for drawing
DRAWPLACEMENT double Line width is centred (0), fully inside (-1) or fully outside (1) or in between
FILLSTYLE enum Style to use for filling shapes (could be impemented internally in the form of a Grid Shape+transform)
POINTSTYLE enum Style to use for drawing points (could be implemented internally in the form of a Shape)
LINESTYLE enum Line style (alternating fill/clear pattern) (could be impemented internally in the form of RVectors1D)
LINESTARTMARKER enum Line end marker (arrowhead, etc.) (could be implemented internally in the form of a Shape)
LINEENDMARKER enum Line end marker (arrowhead, etc.) (could be implemented internally in the form of a Shape)
MARKERSIZE double Size of points and line start/end markers; scales marker
TEXTFONT scijava.roi.types.String Font description (format? freetype-style fontdesc?)
TEXTPLACEMENT double[2] Text placement in bounding box (-1,+1) for x and y limits, (0,0) being centred
TEXTSIZE double Font size


Barry DeZonia Support different coordinate spaces as needed (int, long, double). Should be possible to iterate some regions.