Adjust padding per shape
This commit is contained in:
parent
6f26167beb
commit
b1beddc9e2
15 changed files with 66 additions and 4 deletions
|
|
@ -1157,6 +1157,18 @@ func (g *Graph) SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// give shapes with icons extra padding
|
||||||
|
if obj.Attributes.Icon != nil {
|
||||||
|
paddingX += 20
|
||||||
|
paddingY += 20
|
||||||
|
}
|
||||||
|
if obj.Attributes.Link != "" {
|
||||||
|
paddingX += 32
|
||||||
|
}
|
||||||
|
if obj.Attributes.Tooltip != "" {
|
||||||
|
paddingX += 32
|
||||||
|
}
|
||||||
|
|
||||||
if desiredWidth == 0 && desiredHeight == 0 {
|
if desiredWidth == 0 && desiredHeight == 0 {
|
||||||
newWidth, newHeight := s.GetDimensionsToFit(contentBox.Width, contentBox.Height, paddingX, paddingY)
|
newWidth, newHeight := s.GetDimensionsToFit(contentBox.Width, contentBox.Height, paddingX, paddingY)
|
||||||
obj.Width = newWidth
|
obj.Width = newWidth
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@ const (
|
||||||
TEXT_TYPE = "Text"
|
TEXT_TYPE = "Text"
|
||||||
CODE_TYPE = "Code"
|
CODE_TYPE = "Code"
|
||||||
IMAGE_TYPE = "Image"
|
IMAGE_TYPE = "Image"
|
||||||
|
|
||||||
|
defaultPadding = 40.
|
||||||
)
|
)
|
||||||
|
|
||||||
type Shape interface {
|
type Shape interface {
|
||||||
|
|
@ -101,7 +103,7 @@ func (s baseShape) GetDimensionsToFit(width, height, paddingX, paddingY float64)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s baseShape) GetDefaultPadding() (paddingX, paddingY float64) {
|
func (s baseShape) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
return 100., 100.
|
return defaultPadding, defaultPadding
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s baseShape) Perimeter() []geo.Intersectable {
|
func (s baseShape) Perimeter() []geo.Intersectable {
|
||||||
|
|
|
||||||
|
|
@ -82,3 +82,7 @@ func (s shapeCallout) GetDimensionsToFit(width, height, paddingX, paddingY float
|
||||||
}
|
}
|
||||||
return width + paddingX, baseHeight
|
return width + paddingX, baseHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapeCallout) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding, defaultPadding / 2
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,3 +45,7 @@ func (s shapeCircle) GetInsidePlacement(width, height, padding float64) geo.Poin
|
||||||
func (s shapeCircle) Perimeter() []geo.Intersectable {
|
func (s shapeCircle) Perimeter() []geo.Intersectable {
|
||||||
return []geo.Intersectable{geo.NewEllipse(s.Box.Center(), s.Box.Width/2, s.Box.Height/2)}
|
return []geo.Intersectable{geo.NewEllipse(s.Box.Center(), s.Box.Width/2, s.Box.Height/2)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapeCircle) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding / 2, defaultPadding / 2
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,5 +119,5 @@ func (s shapeCloud) GetSVGPathData() []string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s shapeCloud) GetDefaultPadding() (paddingX, paddingY float64) {
|
func (s shapeCloud) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
return 50, 50
|
return defaultPadding, defaultPadding / 2
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,3 +82,7 @@ func (s shapeCylinder) GetDimensionsToFit(width, height, paddingX, paddingY floa
|
||||||
totalHeight := height + paddingY + 3*defaultArcDepth
|
totalHeight := height + paddingY + 3*defaultArcDepth
|
||||||
return width + paddingX, totalHeight
|
return width + paddingX, totalHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapeCylinder) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding, defaultPadding / 2
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,3 +60,7 @@ func (s shapeDiamond) GetDimensionsToFit(width, height, paddingX, paddingY float
|
||||||
totalHeight := 2 * (height + paddingY)
|
totalHeight := 2 * (height + paddingY)
|
||||||
return totalWidth, totalHeight
|
return totalWidth, totalHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapeDiamond) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding / 4, defaultPadding / 2
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,10 @@ func (s shapeDocument) GetSVGPathData() []string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s shapeDocument) GetDimensionsToFit(width, height, paddingX, paddingY float64) (float64, float64) {
|
func (s shapeDocument) GetDimensionsToFit(width, height, paddingX, paddingY float64) (float64, float64) {
|
||||||
baseHeight := (height + paddingX) * docPathHeight / docPathInnerBottom
|
baseHeight := (height + paddingY) * docPathHeight / docPathInnerBottom
|
||||||
return width + paddingY, baseHeight
|
return width + paddingX, baseHeight
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s shapeDocument) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding, defaultPadding * docPathInnerBottom / docPathHeight
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,3 +53,7 @@ func (s shapeHexagon) GetDimensionsToFit(width, height, paddingX, paddingY float
|
||||||
totalWidth := 2 * (width + paddingX)
|
totalWidth := 2 * (width + paddingX)
|
||||||
return totalWidth, height + paddingY
|
return totalWidth, height + paddingY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapeHexagon) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding / 4, defaultPadding
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,3 +82,7 @@ func (s shapePackage) GetDimensionsToFit(width, height, paddingX, paddingY float
|
||||||
|
|
||||||
return width + paddingX, totalHeight
|
return width + paddingX, totalHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapePackage) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding, .8 * defaultPadding
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -97,3 +97,7 @@ func (s shapePage) GetDimensionsToFit(width, height, paddingX, paddingY float64)
|
||||||
totalHeight = math.Max(totalHeight, pageCornerHeight)
|
totalHeight = math.Max(totalHeight, pageCornerHeight)
|
||||||
return totalWidth, totalHeight
|
return totalWidth, totalHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapePage) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding, pageCornerHeight + defaultPadding
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,3 +74,7 @@ func (s shapePerson) GetDimensionsToFit(width, height, paddingX, paddingY float6
|
||||||
totalHeight := height + paddingY
|
totalHeight := height + paddingY
|
||||||
return totalWidth, totalHeight
|
return totalWidth, totalHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapePerson) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return 10, defaultPadding
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,3 +78,7 @@ func (s shapeQueue) GetDimensionsToFit(width, height, paddingX, paddingY float64
|
||||||
totalWidth := 3*defaultArcDepth + width + paddingX
|
totalWidth := 3*defaultArcDepth + width + paddingX
|
||||||
return totalWidth, height + paddingY
|
return totalWidth, height + paddingY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapeQueue) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding / 2, defaultPadding
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,3 +58,7 @@ func (s shapeStep) GetDimensionsToFit(width, height, paddingX, paddingY float64)
|
||||||
totalWidth := width + paddingX + 2*STEP_WEDGE_WIDTH
|
totalWidth := width + paddingX + 2*STEP_WEDGE_WIDTH
|
||||||
return totalWidth, height + paddingY
|
return totalWidth, height + paddingY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapeStep) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding / 4, defaultPadding + STEP_WEDGE_WIDTH
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,3 +60,7 @@ func (s shapeStoredData) GetDimensionsToFit(width, height, paddingX, paddingY fl
|
||||||
totalWidth := width + paddingX + 2*storedDataWedgeWidth
|
totalWidth := width + paddingX + 2*storedDataWedgeWidth
|
||||||
return totalWidth, height + paddingY
|
return totalWidth, height + paddingY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s shapeStoredData) GetDefaultPadding() (paddingX, paddingY float64) {
|
||||||
|
return defaultPadding - 10, defaultPadding
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue