Documentation ¶
Index ¶
- Constants
- Variables
- func GetIconSize(box *geo.Box, position string) int
- func IsShape(s string) bool
- type Arrowhead
- type Class
- type ClassField
- type ClassMethod
- type Config
- type Connection
- type Diagram
- func (diagram Diagram) BoundingBox() (topLeft, bottomRight Point)
- func (diagram Diagram) Bytes() ([]byte, error)
- func (d *Diagram) GetBoard(boardPath []string) *Diagram
- func (diagram Diagram) GetCorpus() string
- func (diagram Diagram) GetNestedCorpus() string
- func (diagram Diagram) HasShape(condition func(Shape) bool) bool
- func (diagram Diagram) HashID() (string, error)
- func (diagram Diagram) NestedBoundingBox() (topLeft, bottomRight Point)
- type MText
- type Point
- type SQLColumn
- type SQLTable
- type Shape
- type Text
- type TextDimensions
- type ThemeOverrides
Constants ¶
View Source
const ( PrefixPadding = 10 PrefixWidth = 20 CenterPadding = 50 // 10px of padding top and bottom so text doesn't look squished VerticalPadding = 20 )
View Source
const ( DEFAULT_ICON_SIZE = 32 MAX_ICON_SIZE = 64 SHADOW_SIZE_X = 3 SHADOW_SIZE_Y = 5 THREE_DEE_OFFSET = 15 MULTIPLE_OFFSET = 10 INNER_BORDER_OFFSET = 5 BG_COLOR = color.N7 FG_COLOR = color.N1 MIN_ARROWHEAD_STROKE_WIDTH = 2 ARROWHEAD_PADDING = 2. )
View Source
const ( ShapeRectangle = "rectangle" ShapeSquare = "square" ShapePage = "page" ShapeParallelogram = "parallelogram" ShapeDocument = "document" ShapeCylinder = "cylinder" ShapeQueue = "queue" ShapePackage = "package" ShapeStep = "step" ShapeCallout = "callout" ShapeStoredData = "stored_data" ShapePerson = "person" ShapeDiamond = "diamond" ShapeOval = "oval" ShapeCircle = "circle" ShapeHexagon = "hexagon" ShapeCloud = "cloud" ShapeText = "text" ShapeCode = "code" ShapeClass = "class" ShapeSQLTable = "sql_table" ShapeImage = "image" ShapeSequenceDiagram = "sequence_diagram" ShapeHierarchy = "hierarchy" )
View Source
const ( NamePadding = 10 TypePadding = 20 ConstraintPadding = 20 HeaderPadding = 10 // Setting table font size sets it for columns // The header needs to be a little larger for visual hierarchy HeaderFontAdd = 4 )
Variables ¶
View Source
var Arrowheads = map[string]struct{}{ string(NoArrowhead): {}, string(ArrowArrowhead): {}, string(TriangleArrowhead): {}, string(DiamondArrowhead): {}, string(CircleArrowhead): {}, string(CfOne): {}, string(CfMany): {}, string(CfOneRequired): {}, string(CfManyRequired): {}, }
valid values for arrowhead.shape
View Source
var BorderOffset = geo.NewVector(5, 5)
View Source
var DSL_SHAPE_TO_SHAPE_TYPE = map[string]string{ "": shape.SQUARE_TYPE, ShapeRectangle: shape.SQUARE_TYPE, ShapeSquare: shape.REAL_SQUARE_TYPE, ShapePage: shape.PAGE_TYPE, ShapeParallelogram: shape.PARALLELOGRAM_TYPE, ShapeDocument: shape.DOCUMENT_TYPE, ShapeCylinder: shape.CYLINDER_TYPE, ShapeQueue: shape.QUEUE_TYPE, ShapePackage: shape.PACKAGE_TYPE, ShapeStep: shape.STEP_TYPE, ShapeCallout: shape.CALLOUT_TYPE, ShapeStoredData: shape.STORED_DATA_TYPE, ShapePerson: shape.PERSON_TYPE, ShapeDiamond: shape.DIAMOND_TYPE, ShapeOval: shape.OVAL_TYPE, ShapeCircle: shape.CIRCLE_TYPE, ShapeHexagon: shape.HEXAGON_TYPE, ShapeCloud: shape.CLOUD_TYPE, ShapeText: shape.TEXT_TYPE, ShapeCode: shape.CODE_TYPE, ShapeClass: shape.CLASS_TYPE, ShapeSQLTable: shape.TABLE_TYPE, ShapeImage: shape.IMAGE_TYPE, ShapeSequenceDiagram: shape.SQUARE_TYPE, ShapeHierarchy: shape.SQUARE_TYPE, }
View Source
var SHAPE_TYPE_TO_DSL_SHAPE map[string]string
View Source
var Shapes = []string{ ShapeRectangle, ShapeSquare, ShapePage, ShapeParallelogram, ShapeDocument, ShapeCylinder, ShapeQueue, ShapePackage, ShapeStep, ShapeCallout, ShapeStoredData, ShapePerson, ShapeDiamond, ShapeOval, ShapeCircle, ShapeHexagon, ShapeCloud, ShapeText, ShapeCode, ShapeClass, ShapeSQLTable, ShapeImage, ShapeSequenceDiagram, ShapeHierarchy, }
Functions ¶
Types ¶
type Arrowhead ¶
type Arrowhead string
const ( NoArrowhead Arrowhead = "none" ArrowArrowhead Arrowhead = "arrow" UnfilledTriangleArrowhead Arrowhead = "unfilled-triangle" TriangleArrowhead Arrowhead = "triangle" DiamondArrowhead Arrowhead = "diamond" FilledDiamondArrowhead Arrowhead = "filled-diamond" CircleArrowhead Arrowhead = "circle" FilledCircleArrowhead Arrowhead = "filled-circle" // For fat arrows LineArrowhead Arrowhead = "line" // Crows feet notation CfOne Arrowhead = "cf-one" CfMany Arrowhead = "cf-many" CfOneRequired Arrowhead = "cf-one-required" CfManyRequired Arrowhead = "cf-many-required" DefaultArrowhead Arrowhead = TriangleArrowhead )
func ToArrowhead ¶
func (Arrowhead) Dimensions ¶ added in v0.4.1
type Class ¶
type Class struct { Fields []ClassField `json:"fields"` Methods []ClassMethod `json:"methods"` }
type ClassField ¶
type ClassField struct { Name string `json:"name"` Type string `json:"type"` Visibility string `json:"visibility"` }
func (ClassField) Text ¶
func (cf ClassField) Text(fontSize int) *MText
func (ClassField) VisibilityToken ¶ added in v0.1.3
func (cf ClassField) VisibilityToken() string
type ClassMethod ¶
type ClassMethod struct { Name string `json:"name"` Return string `json:"return"` Visibility string `json:"visibility"` }
func (ClassMethod) Text ¶
func (cm ClassMethod) Text(fontSize int) *MText
func (ClassMethod) VisibilityToken ¶ added in v0.1.3
func (cm ClassMethod) VisibilityToken() string
type Config ¶ added in v0.6.0
type Config struct { Sketch *bool `json:"sketch"` ThemeID *int64 `json:"themeID"` DarkThemeID *int64 `json:"darkThemeID"` Pad *int64 `json:"pad"` Center *bool `json:"center"` LayoutEngine *string `json:"layoutEngine"` ThemeOverrides *ThemeOverrides `json:"themeOverrides,omitempty"` DarkThemeOverrides *ThemeOverrides `json:"darkThemeOverrides,omitempty"` // Data is a data structure for holding user-defined data // useful for plugins that allow users to configure within source code Data map[string]interface{} `json:"data,omitempty"` }
type Connection ¶
type Connection struct { ID string `json:"id"` Classes []string `json:"classes,omitempty"` Src string `json:"src"` SrcArrow Arrowhead `json:"srcArrow"` SrcLabel *Text `json:"srcLabel,omitempty"` Dst string `json:"dst"` DstArrow Arrowhead `json:"dstArrow"` DstLabel *Text `json:"dstLabel,omitempty"` Opacity float64 `json:"opacity"` StrokeDash float64 `json:"strokeDash"` StrokeWidth int `json:"strokeWidth"` Stroke string `json:"stroke"` Fill string `json:"fill,omitempty"` BorderRadius float64 `json:"borderRadius,omitempty"` Text LabelPosition string `json:"labelPosition"` LabelPercentage float64 `json:"labelPercentage"` Route []*geo.Point `json:"route"` IsCurve bool `json:"isCurve,omitempty"` Animated bool `json:"animated"` Tooltip string `json:"tooltip"` Icon *url.URL `json:"icon"` ZIndex int `json:"zIndex"` }
func BaseConnection ¶
func BaseConnection() *Connection
func (Connection) CSSStyle ¶ added in v0.1.6
func (c Connection) CSSStyle() string
func (*Connection) GetArrowheadLabelPosition ¶ added in v0.4.1
func (connection *Connection) GetArrowheadLabelPosition(isDst bool) *geo.Point
func (Connection) GetFontColor ¶ added in v0.2.2
func (c Connection) GetFontColor() string
func (Connection) GetID ¶ added in v0.1.0
func (c Connection) GetID() string
func (*Connection) GetLabelTopLeft ¶
func (c *Connection) GetLabelTopLeft() *geo.Point
func (Connection) GetZIndex ¶ added in v0.1.0
func (c Connection) GetZIndex() int
type Diagram ¶
type Diagram struct { Name string `json:"name"` Config *Config `json:"config,omitempty"` // See docs on the same field in d2graph to understand what it means. IsFolderOnly bool `json:"isFolderOnly"` Description string `json:"description,omitempty"` FontFamily *d2fonts.FontFamily `json:"fontFamily,omitempty"` Shapes []Shape `json:"shapes"` Connections []Connection `json:"connections"` Root Shape `json:"root"` Layers []*Diagram `json:"layers,omitempty"` Scenarios []*Diagram `json:"scenarios,omitempty"` Steps []*Diagram `json:"steps,omitempty"` }
func NewDiagram ¶
func NewDiagram() *Diagram
func (Diagram) BoundingBox ¶
func (Diagram) GetNestedCorpus ¶ added in v0.3.0
func (Diagram) NestedBoundingBox ¶ added in v0.3.0
type MText ¶
type SQLColumn ¶
type SQLColumn struct { Name Text `json:"name"` Type Text `json:"type"` Constraint []string `json:"constraint"` Reference string `json:"reference"` }
func (SQLColumn) ConstraintAbbr ¶ added in v0.1.3
type Shape ¶
type Shape struct { ID string `json:"id"` Type string `json:"type"` Classes []string `json:"classes,omitempty"` Pos Point `json:"pos"` Width int `json:"width"` Height int `json:"height"` Opacity float64 `json:"opacity"` StrokeDash float64 `json:"strokeDash"` StrokeWidth int `json:"strokeWidth"` BorderRadius int `json:"borderRadius"` Fill string `json:"fill"` FillPattern string `json:"fillPattern,omitempty"` Stroke string `json:"stroke"` Shadow bool `json:"shadow"` ThreeDee bool `json:"3d"` Multiple bool `json:"multiple"` DoubleBorder bool `json:"double-border"` Tooltip string `json:"tooltip"` Link string `json:"link"` PrettyLink string `json:"prettyLink,omitempty"` Icon *url.URL `json:"icon"` IconPosition string `json:"iconPosition"` // Whether the shape should allow shapes behind it to bleed through // Currently just used for sequence diagram groups Blend bool `json:"blend"` Class SQLTable ContentAspectRatio *float64 `json:"contentAspectRatio,omitempty"` Text LabelPosition string `json:"labelPosition,omitempty"` ZIndex int `json:"zIndex"` Level int `json:"level"` // These are used for special shapes, sql_table and class PrimaryAccentColor string `json:"primaryAccentColor,omitempty"` SecondaryAccentColor string `json:"secondaryAccentColor,omitempty"` NeutralAccentColor string `json:"neutralAccentColor,omitempty"` }
func (Shape) GetFontColor ¶ added in v0.2.2
type Text ¶
type Text struct { Label string `json:"label"` FontSize int `json:"fontSize"` FontFamily string `json:"fontFamily"` Language string `json:"language"` Color string `json:"color"` Italic bool `json:"italic"` Bold bool `json:"bold"` Underline bool `json:"underline"` LabelWidth int `json:"labelWidth"` LabelHeight int `json:"labelHeight"` LabelFill string `json:"labelFill,omitempty"` }
type TextDimensions ¶
func NewTextDimensions ¶
func NewTextDimensions(w, h int) *TextDimensions
type ThemeOverrides ¶ added in v0.6.0
type ThemeOverrides struct { N1 *string `json:"n1"` N2 *string `json:"n2"` N3 *string `json:"n3"` N4 *string `json:"n4"` N5 *string `json:"n5"` N6 *string `json:"n6"` N7 *string `json:"n7"` B1 *string `json:"b1"` B2 *string `json:"b2"` B3 *string `json:"b3"` B4 *string `json:"b4"` B5 *string `json:"b5"` B6 *string `json:"b6"` AA2 *string `json:"aa2"` AA4 *string `json:"aa4"` AA5 *string `json:"aa5"` AB4 *string `json:"ab4"` AB5 *string `json:"ab5"` }
Click to show internal directories.
Click to hide internal directories.