mirror of
https://github.com/octoleo/plantuml.git
synced 2024-11-24 13:57:33 +00:00
Change default theme
This commit is contained in:
parent
edacfb5dbc
commit
4534dc4ee2
@ -8,19 +8,19 @@ root {
|
||||
RoundCorner 0
|
||||
DiagonalCorner 0
|
||||
LineThickness 1.0
|
||||
LineColor #A80036
|
||||
BackGroundColor #FEFECE
|
||||
LineColor #181818
|
||||
BackGroundColor #f8f8f8
|
||||
Shadowing 0.0
|
||||
}
|
||||
|
||||
document {
|
||||
BackGroundColor White
|
||||
BackGroundColor white
|
||||
header {
|
||||
HorizontalAlignment right
|
||||
FontSize 10
|
||||
FontColor #888888
|
||||
BackGroundColor none
|
||||
LineColor none
|
||||
FontColor #8
|
||||
BackGroundColor transparent
|
||||
LineColor transparent
|
||||
}
|
||||
title {
|
||||
HorizontalAlignment center
|
||||
@ -28,19 +28,19 @@ document {
|
||||
FontStyle bold
|
||||
Padding 5
|
||||
Margin 5
|
||||
LineColor none
|
||||
BackGroundColor none
|
||||
LineColor transparent
|
||||
BackGroundColor transparent
|
||||
}
|
||||
footer {
|
||||
HorizontalAlignment center
|
||||
FontSize 10
|
||||
FontColor #888888
|
||||
BackGroundColor none
|
||||
LineColor none
|
||||
FontColor #8
|
||||
BackGroundColor transparent
|
||||
LineColor transparent
|
||||
}
|
||||
legend {
|
||||
LineColor black
|
||||
BackGroundColor #DDDDDD
|
||||
BackGroundColor #D
|
||||
FontSize 14
|
||||
RoundCorner 15
|
||||
Padding 6
|
||||
@ -51,8 +51,12 @@ document {
|
||||
FontSize 14
|
||||
Padding 0
|
||||
Margin 1
|
||||
LineColor none
|
||||
BackGroundColor none
|
||||
LineColor transparent
|
||||
BackGroundColor transparent
|
||||
}
|
||||
frame {
|
||||
LineColor black
|
||||
LineThickness 1.5
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,60 +67,12 @@ stereotype {
|
||||
|
||||
|
||||
element {
|
||||
Shadowing 4.0
|
||||
Shadowing 0.0
|
||||
title {
|
||||
FontStyle bold
|
||||
}
|
||||
}
|
||||
|
||||
artifact {
|
||||
Shadowing 4.0
|
||||
}
|
||||
node {
|
||||
Shadowing 2.0
|
||||
}
|
||||
person {
|
||||
Shadowing 2.0
|
||||
}
|
||||
queue {
|
||||
Shadowing 2.0
|
||||
}
|
||||
rectangle {
|
||||
Shadowing 3.0
|
||||
}
|
||||
stack {
|
||||
Shadowing 3.0
|
||||
}
|
||||
storage {
|
||||
Shadowing 3.0
|
||||
}
|
||||
boundary {
|
||||
Shadowing 4.0
|
||||
}
|
||||
card {
|
||||
Shadowing 3.0
|
||||
}
|
||||
cloud {
|
||||
Shadowing 3.0
|
||||
}
|
||||
collections {
|
||||
Shadowing 3.0
|
||||
}
|
||||
component {
|
||||
Shadowing 4.0
|
||||
}
|
||||
database {
|
||||
Shadowing 3.0
|
||||
}
|
||||
file {
|
||||
Shadowing 3.0
|
||||
}
|
||||
frame {
|
||||
Shadowing 3.0
|
||||
}
|
||||
folder {
|
||||
Shadowing 3.0
|
||||
}
|
||||
group {
|
||||
package {
|
||||
LineThickness 1.5
|
||||
@ -141,7 +97,7 @@ sequenceDiagram {
|
||||
}
|
||||
|
||||
groupHeader {
|
||||
BackGroundColor #EEEEEE
|
||||
BackGroundColor #e
|
||||
LineColor black
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
@ -152,6 +108,41 @@ sequenceDiagram {
|
||||
LineStyle 5
|
||||
}
|
||||
|
||||
destroy {
|
||||
}
|
||||
|
||||
reference {
|
||||
FontSize 12
|
||||
LineColor black
|
||||
BackGroundColor transparent
|
||||
LineThickness 2.0
|
||||
HorizontalAlignment center
|
||||
}
|
||||
|
||||
referenceHeader {
|
||||
LineColor black
|
||||
BackGroundColor #e
|
||||
FontColor black
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
LineThickness 2.0
|
||||
}
|
||||
|
||||
box {
|
||||
BackGroundColor #d
|
||||
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
}
|
||||
|
||||
separator {
|
||||
LineColor black
|
||||
LineThickness 2.0
|
||||
BackGroundColor #e
|
||||
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
}
|
||||
}
|
||||
|
||||
classDiagram {
|
||||
@ -214,42 +205,6 @@ stateDiagram {
|
||||
}
|
||||
|
||||
|
||||
destroy {
|
||||
}
|
||||
|
||||
reference {
|
||||
FontSize 12
|
||||
LineColor black
|
||||
BackGroundColor while
|
||||
LineThickness 2.0
|
||||
HorizontalAlignment center
|
||||
}
|
||||
|
||||
referenceHeader {
|
||||
LineColor black
|
||||
BackGroundColor #EEEEEE
|
||||
FontColor black
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
LineThickness 2.0
|
||||
}
|
||||
|
||||
box {
|
||||
BackGroundColor #DDDDDD
|
||||
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
}
|
||||
|
||||
separator {
|
||||
LineColor black
|
||||
LineThickness 2.0
|
||||
BackGroundColor #EEEEEE
|
||||
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
}
|
||||
|
||||
delay {
|
||||
FontSize 11
|
||||
FontStyle plain
|
||||
@ -302,17 +257,13 @@ swimlane {
|
||||
FontSize 18
|
||||
}
|
||||
|
||||
diamond {
|
||||
Shadowing 3.0
|
||||
}
|
||||
|
||||
arrow {
|
||||
FontSize 13
|
||||
}
|
||||
|
||||
note {
|
||||
FontSize 13
|
||||
BackGroundColor #FBFB77
|
||||
BackGroundColor #ebebeb
|
||||
}
|
||||
|
||||
partition {
|
||||
@ -345,10 +296,6 @@ wbsDiagram {
|
||||
FontSize 12
|
||||
}
|
||||
|
||||
activityDiagram {
|
||||
Shadowing 3.0
|
||||
}
|
||||
|
||||
activityDiagram {
|
||||
activity {
|
||||
LineThickness 1.5
|
||||
@ -366,16 +313,23 @@ activityDiagram {
|
||||
arrow {
|
||||
FontSize 11
|
||||
}
|
||||
}
|
||||
|
||||
activityBar {
|
||||
Shadowing 3.0
|
||||
BackgroundColor black
|
||||
}
|
||||
|
||||
circle {
|
||||
LineColor black
|
||||
Shadowing 3.0
|
||||
circle {
|
||||
start {
|
||||
LineColor #2
|
||||
BackgroundColor #2
|
||||
}
|
||||
stop {
|
||||
LineColor #2
|
||||
BackgroundColor transparent
|
||||
}
|
||||
end {
|
||||
LineColor #2
|
||||
BackgroundColor transparent
|
||||
}
|
||||
}
|
||||
activityBar {
|
||||
BackgroundColor #5
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -395,7 +349,6 @@ ganttDiagram {
|
||||
}
|
||||
note {
|
||||
FontSize 9
|
||||
Shadowing 0.0
|
||||
}
|
||||
separator {
|
||||
FontSize 11
|
||||
@ -409,8 +362,8 @@ ganttDiagram {
|
||||
LineColor #C0C0C0
|
||||
}
|
||||
closed {
|
||||
BackGroundColor #E0E8E8
|
||||
FontColor #909898
|
||||
BackGroundColor #E0E0E0
|
||||
FontColor #989898
|
||||
}
|
||||
task {
|
||||
RoundCorner 0
|
||||
@ -456,27 +409,250 @@ yamlDiagram,jsonDiagram {
|
||||
|
||||
|
||||
timingDiagram {
|
||||
LineColor #3
|
||||
FontColor #3
|
||||
FontStyle bold
|
||||
LineThickness 1.5
|
||||
timeline {
|
||||
FontStyle plain
|
||||
FontSize 11
|
||||
}
|
||||
arrow {
|
||||
LineColor darkblue
|
||||
LineThickness 1.5
|
||||
}
|
||||
constraintArrow {
|
||||
FontSize 12
|
||||
FontStyle plain
|
||||
FontColor darkred
|
||||
LineColor darkred
|
||||
LineThickness 1.5
|
||||
}
|
||||
clock {
|
||||
LineColor darkgreen
|
||||
}
|
||||
concise {
|
||||
FontSize 12
|
||||
LineColor darkgreen
|
||||
BackgroundColor #c
|
||||
}
|
||||
robust {
|
||||
FontStyle plain
|
||||
FontSize 12
|
||||
LineColor darkgreen
|
||||
LineThickness 2
|
||||
BackgroundColor #c
|
||||
}
|
||||
highlight {
|
||||
BackgroundColor #e
|
||||
LineThickness 2
|
||||
LineStyle 4;4
|
||||
}
|
||||
}
|
||||
|
||||
nwdiagDiagram {
|
||||
network {
|
||||
FontSize 12
|
||||
Shadowing 1.0
|
||||
}
|
||||
server {
|
||||
FontSize 12
|
||||
}
|
||||
group {
|
||||
FontSize 12
|
||||
BackGroundColor #ddd
|
||||
BackGroundColor #d
|
||||
}
|
||||
arrow {
|
||||
FontSize 11
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media (prefers-color-scheme:dark) {
|
||||
root {
|
||||
HyperLinkColor blue
|
||||
FontColor white
|
||||
LineColor #e7e7e7
|
||||
BackGroundColor #070707
|
||||
}
|
||||
|
||||
document {
|
||||
BackGroundColor black
|
||||
header {
|
||||
FontColor #7
|
||||
}
|
||||
footer {
|
||||
FontColor #7
|
||||
}
|
||||
legend {
|
||||
LineColor white
|
||||
BackGroundColor #2
|
||||
}
|
||||
frame {
|
||||
LineColor white
|
||||
}
|
||||
}
|
||||
|
||||
group {
|
||||
package {
|
||||
LineColor white
|
||||
}
|
||||
folder {
|
||||
LineColor white
|
||||
}
|
||||
}
|
||||
|
||||
sequenceDiagram {
|
||||
group {
|
||||
LineColor white
|
||||
}
|
||||
|
||||
groupHeader {
|
||||
BackGroundColor #5
|
||||
LineColor white
|
||||
}
|
||||
|
||||
lifeLine {
|
||||
BackGroundColor black
|
||||
}
|
||||
reference {
|
||||
LineColor #d
|
||||
}
|
||||
|
||||
referenceHeader {
|
||||
LineColor #d
|
||||
FontColor white
|
||||
BackGroundColor #4
|
||||
}
|
||||
|
||||
box {
|
||||
BackGroundColor #2
|
||||
}
|
||||
|
||||
separator {
|
||||
LineColor white
|
||||
BackGroundColor #1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
spot {
|
||||
spotAnnotation {
|
||||
BackgroundColor #4A0000
|
||||
}
|
||||
spotAbstractClass {
|
||||
BackgroundColor #2A5D60
|
||||
}
|
||||
spotClass {
|
||||
BackgroundColor #2E5233
|
||||
}
|
||||
spotInterface {
|
||||
BackgroundColor #352866
|
||||
}
|
||||
spotEnum {
|
||||
BackgroundColor #852D19
|
||||
}
|
||||
spotEntity {
|
||||
BackgroundColor #2E5233
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
swimlane {
|
||||
LineColor white
|
||||
}
|
||||
|
||||
note {
|
||||
BackGroundColor #3
|
||||
}
|
||||
|
||||
|
||||
activityDiagram {
|
||||
partition {
|
||||
LineColor white
|
||||
}
|
||||
circle {
|
||||
start {
|
||||
LineColor #d
|
||||
BackgroundColor #d
|
||||
}
|
||||
stop {
|
||||
LineColor #d
|
||||
BackgroundColor transparent
|
||||
}
|
||||
end {
|
||||
LineColor #d
|
||||
BackgroundColor transparent
|
||||
}
|
||||
}
|
||||
activityBar {
|
||||
BackgroundColor #a
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
milestone {
|
||||
BackGroundColor white
|
||||
LineColor white
|
||||
}
|
||||
|
||||
timingDiagram {
|
||||
LineColor #d
|
||||
FontColor #d
|
||||
arrow {
|
||||
LineColor lightblue
|
||||
}
|
||||
constraintArrow {
|
||||
LineColor tomato
|
||||
FontColor tomato
|
||||
}
|
||||
clock {
|
||||
LineColor lightgreen
|
||||
}
|
||||
concise {
|
||||
LineColor lightgreen
|
||||
BackgroundColor #6
|
||||
}
|
||||
robust {
|
||||
LineColor lightgreen
|
||||
BackgroundColor #3
|
||||
}
|
||||
highlight {
|
||||
BackgroundColor #1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
ganttDiagram {
|
||||
timeline {
|
||||
LineColor #3f3f3f
|
||||
}
|
||||
closed {
|
||||
BackGroundColor #1f1f1f
|
||||
FontColor #676767
|
||||
}
|
||||
undone {
|
||||
BackGroundColor black
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
yamlDiagram,jsonDiagram {
|
||||
BackGroundColor black
|
||||
FontColor white
|
||||
LineColor white
|
||||
node {
|
||||
highlight {
|
||||
BackGroundColor #ccff02
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
nwdiagDiagram {
|
||||
group {
|
||||
BackGroundColor #2
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -8,19 +8,19 @@ root {
|
||||
RoundCorner 0
|
||||
DiagonalCorner 0
|
||||
LineThickness 1.0
|
||||
LineColor #181818
|
||||
BackGroundColor #f8f8f8
|
||||
LineColor #A80036
|
||||
BackGroundColor #FEFECE
|
||||
Shadowing 0.0
|
||||
}
|
||||
|
||||
document {
|
||||
BackGroundColor White
|
||||
BackGroundColor white
|
||||
header {
|
||||
HorizontalAlignment right
|
||||
FontSize 10
|
||||
FontColor #888888
|
||||
BackGroundColor none
|
||||
LineColor none
|
||||
FontColor #8
|
||||
BackGroundColor transparent
|
||||
LineColor transparent
|
||||
}
|
||||
title {
|
||||
HorizontalAlignment center
|
||||
@ -28,19 +28,19 @@ document {
|
||||
FontStyle bold
|
||||
Padding 5
|
||||
Margin 5
|
||||
LineColor none
|
||||
BackGroundColor none
|
||||
LineColor transparent
|
||||
BackGroundColor transparent
|
||||
}
|
||||
footer {
|
||||
HorizontalAlignment center
|
||||
FontSize 10
|
||||
FontColor #888888
|
||||
BackGroundColor none
|
||||
LineColor none
|
||||
FontColor #8
|
||||
BackGroundColor transparent
|
||||
LineColor transparent
|
||||
}
|
||||
legend {
|
||||
LineColor black
|
||||
BackGroundColor #DDDDDD
|
||||
BackGroundColor #d
|
||||
FontSize 14
|
||||
RoundCorner 15
|
||||
Padding 6
|
||||
@ -51,8 +51,12 @@ document {
|
||||
FontSize 14
|
||||
Padding 0
|
||||
Margin 1
|
||||
LineColor none
|
||||
BackGroundColor none
|
||||
LineColor transparent
|
||||
BackGroundColor transparent
|
||||
}
|
||||
frame {
|
||||
LineColor black
|
||||
LineThickness 1.5
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,12 +67,60 @@ stereotype {
|
||||
|
||||
|
||||
element {
|
||||
Shadowing 0.0
|
||||
Shadowing 4.0
|
||||
title {
|
||||
FontStyle bold
|
||||
}
|
||||
}
|
||||
|
||||
artifact {
|
||||
Shadowing 4.0
|
||||
}
|
||||
node {
|
||||
Shadowing 2.0
|
||||
}
|
||||
person {
|
||||
Shadowing 2.0
|
||||
}
|
||||
queue {
|
||||
Shadowing 2.0
|
||||
}
|
||||
rectangle {
|
||||
Shadowing 3.0
|
||||
}
|
||||
stack {
|
||||
Shadowing 3.0
|
||||
}
|
||||
storage {
|
||||
Shadowing 3.0
|
||||
}
|
||||
boundary {
|
||||
Shadowing 4.0
|
||||
}
|
||||
card {
|
||||
Shadowing 3.0
|
||||
}
|
||||
cloud {
|
||||
Shadowing 3.0
|
||||
}
|
||||
collections {
|
||||
Shadowing 3.0
|
||||
}
|
||||
component {
|
||||
Shadowing 4.0
|
||||
}
|
||||
database {
|
||||
Shadowing 3.0
|
||||
}
|
||||
file {
|
||||
Shadowing 3.0
|
||||
}
|
||||
frame {
|
||||
Shadowing 3.0
|
||||
}
|
||||
folder {
|
||||
Shadowing 3.0
|
||||
}
|
||||
group {
|
||||
package {
|
||||
LineThickness 1.5
|
||||
@ -93,7 +145,7 @@ sequenceDiagram {
|
||||
}
|
||||
|
||||
groupHeader {
|
||||
BackGroundColor #EEEEEE
|
||||
BackGroundColor #e
|
||||
LineColor black
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
@ -104,6 +156,42 @@ sequenceDiagram {
|
||||
LineStyle 5
|
||||
}
|
||||
|
||||
|
||||
destroy {
|
||||
}
|
||||
|
||||
reference {
|
||||
FontSize 12
|
||||
LineColor black
|
||||
BackGroundColor white
|
||||
LineThickness 2.0
|
||||
HorizontalAlignment center
|
||||
}
|
||||
|
||||
referenceHeader {
|
||||
LineColor black
|
||||
BackGroundColor #e
|
||||
FontColor black
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
LineThickness 2.0
|
||||
}
|
||||
|
||||
box {
|
||||
BackGroundColor #d
|
||||
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
}
|
||||
|
||||
separator {
|
||||
LineColor black
|
||||
LineThickness 2.0
|
||||
BackGroundColor #e
|
||||
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
}
|
||||
}
|
||||
|
||||
classDiagram {
|
||||
@ -166,42 +254,6 @@ stateDiagram {
|
||||
}
|
||||
|
||||
|
||||
destroy {
|
||||
}
|
||||
|
||||
reference {
|
||||
FontSize 12
|
||||
LineColor black
|
||||
BackGroundColor while
|
||||
LineThickness 2.0
|
||||
HorizontalAlignment center
|
||||
}
|
||||
|
||||
referenceHeader {
|
||||
LineColor black
|
||||
BackGroundColor #EEEEEE
|
||||
FontColor black
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
LineThickness 2.0
|
||||
}
|
||||
|
||||
box {
|
||||
BackGroundColor #DDDDDD
|
||||
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
}
|
||||
|
||||
separator {
|
||||
LineColor black
|
||||
LineThickness 2.0
|
||||
BackGroundColor #EEEEEE
|
||||
|
||||
FontSize 13
|
||||
FontStyle bold
|
||||
}
|
||||
|
||||
delay {
|
||||
FontSize 11
|
||||
FontStyle plain
|
||||
@ -254,13 +306,17 @@ swimlane {
|
||||
FontSize 18
|
||||
}
|
||||
|
||||
diamond {
|
||||
Shadowing 3.0
|
||||
}
|
||||
|
||||
arrow {
|
||||
FontSize 13
|
||||
}
|
||||
|
||||
note {
|
||||
FontSize 13
|
||||
BackGroundColor #ebebeb
|
||||
BackGroundColor #FBFB77
|
||||
}
|
||||
|
||||
partition {
|
||||
@ -293,6 +349,10 @@ wbsDiagram {
|
||||
FontSize 12
|
||||
}
|
||||
|
||||
activityDiagram {
|
||||
Shadowing 3.0
|
||||
}
|
||||
|
||||
activityDiagram {
|
||||
activity {
|
||||
LineThickness 1.5
|
||||
@ -310,14 +370,24 @@ activityDiagram {
|
||||
arrow {
|
||||
FontSize 11
|
||||
}
|
||||
}
|
||||
|
||||
activityBar {
|
||||
BackgroundColor black
|
||||
}
|
||||
|
||||
circle {
|
||||
LineColor black
|
||||
circle {
|
||||
start {
|
||||
LineColor black
|
||||
BackgroundColor black
|
||||
}
|
||||
stop {
|
||||
LineColor black
|
||||
BackgroundColor white
|
||||
}
|
||||
end {
|
||||
LineColor black
|
||||
BackgroundColor white
|
||||
}
|
||||
}
|
||||
activityBar {
|
||||
Shadowing 3.0
|
||||
BackgroundColor black
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -337,6 +407,7 @@ ganttDiagram {
|
||||
}
|
||||
note {
|
||||
FontSize 9
|
||||
Shadowing 0.0
|
||||
}
|
||||
separator {
|
||||
FontSize 11
|
||||
@ -397,17 +468,51 @@ yamlDiagram,jsonDiagram {
|
||||
|
||||
|
||||
timingDiagram {
|
||||
LineColor #3
|
||||
FontColor #3
|
||||
FontStyle bold
|
||||
LineThickness 1.5
|
||||
timeline {
|
||||
FontStyle plain
|
||||
FontSize 11
|
||||
}
|
||||
arrow {
|
||||
LineColor darkblue
|
||||
LineThickness 1.5
|
||||
}
|
||||
constraintArrow {
|
||||
FontSize 12
|
||||
FontStyle plain
|
||||
FontColor darkred
|
||||
LineColor darkred
|
||||
LineThickness 1.5
|
||||
}
|
||||
clock {
|
||||
LineColor darkgreen
|
||||
}
|
||||
concise {
|
||||
FontSize 12
|
||||
LineColor darkgreen
|
||||
BackgroundColor #c
|
||||
}
|
||||
robust {
|
||||
FontStyle plain
|
||||
FontSize 12
|
||||
LineColor darkgreen
|
||||
LineThickness 2
|
||||
BackgroundColor #c
|
||||
}
|
||||
highlight {
|
||||
BackgroundColor #e
|
||||
LineThickness 2
|
||||
LineStyle 4;4
|
||||
}
|
||||
}
|
||||
|
||||
nwdiagDiagram {
|
||||
network {
|
||||
FontSize 12
|
||||
Shadowing 1.0
|
||||
}
|
||||
server {
|
||||
FontSize 12
|
||||
@ -420,33 +525,3 @@ nwdiagDiagram {
|
||||
FontSize 11
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media (prefers-color-scheme:dark) {
|
||||
element {
|
||||
LineColor #e7e7e7
|
||||
BackGroundColor #070707
|
||||
FontColor white
|
||||
}
|
||||
spot {
|
||||
spotAnnotation {
|
||||
BackgroundColor #4A0000
|
||||
}
|
||||
spotAbstractClass {
|
||||
BackgroundColor #2A5D60
|
||||
}
|
||||
spotClass {
|
||||
BackgroundColor #2E5233
|
||||
}
|
||||
spotInterface {
|
||||
BackgroundColor #352866
|
||||
}
|
||||
spotEnum {
|
||||
BackgroundColor #852D19
|
||||
}
|
||||
spotEntity {
|
||||
BackgroundColor #2E5233
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ package jcckit.util;
|
||||
import java.awt.Color;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.ugraphic.color.ColorMapperIdentity;
|
||||
import net.sourceforge.plantuml.ugraphic.color.HColorSet;
|
||||
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
|
||||
@ -306,7 +306,7 @@ static private HColorSet colors = HColorSet.instance();
|
||||
private Color decodeInternal(String value) {
|
||||
if (value!=null) {
|
||||
try {
|
||||
return new ColorMapperIdentity().toColor(colors.getColor(ThemeStyle.LIGHT, value, null));
|
||||
return new ColorMapperIdentity().toColor(colors.getColor(ThemeStyle.LIGHT_REGULAR, value, null));
|
||||
} catch (NoSuchColorException e) {
|
||||
return Color.WHITE;
|
||||
}
|
||||
|
@ -50,6 +50,7 @@ import net.sourceforge.plantuml.graphic.SymbolContext;
|
||||
import net.sourceforge.plantuml.graphic.TextBlock;
|
||||
import net.sourceforge.plantuml.graphic.TextBlockUtils;
|
||||
import net.sourceforge.plantuml.graphic.USymbol;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleSignature;
|
||||
@ -57,6 +58,7 @@ import net.sourceforge.plantuml.svek.DecorateEntityImage;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.ugraphic.MinMax;
|
||||
import net.sourceforge.plantuml.ugraphic.UGraphic;
|
||||
import net.sourceforge.plantuml.ugraphic.UStroke;
|
||||
import net.sourceforge.plantuml.ugraphic.UTranslate;
|
||||
import net.sourceforge.plantuml.ugraphic.color.HColor;
|
||||
import net.sourceforge.plantuml.ugraphic.color.HColorUtils;
|
||||
@ -88,22 +90,39 @@ public class AnnotatedWorker {
|
||||
|
||||
public TextBlock addFrame(final TextBlock original) {
|
||||
final Display mainFrame = annotated.getMainFrame();
|
||||
if (mainFrame == null) {
|
||||
if (mainFrame == null)
|
||||
return original;
|
||||
}
|
||||
|
||||
final double x1 = 5;
|
||||
final double x2 = 7;
|
||||
final double y1 = 10;
|
||||
final double y2 = 10;
|
||||
|
||||
final SymbolContext symbolContext = new SymbolContext(getBackgroundColor(), HColorUtils.BLACK)
|
||||
.withShadow(getSkinParam().shadowing(null) ? 3 : 0);
|
||||
final double deltaShadow;
|
||||
final FontConfiguration fontConfiguration;
|
||||
final UStroke stroke;
|
||||
final HColor borderColor;
|
||||
if (UseStyle.useBetaStyle()) {
|
||||
final Style style = StyleSignature.of(SName.root, SName.document, SName.frame)
|
||||
.getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
deltaShadow = style.value(PName.Shadowing).asDouble();
|
||||
fontConfiguration = new FontConfiguration(getSkinParam(), style);
|
||||
stroke = style.getStroke();
|
||||
borderColor = style.value(PName.LineColor).asColor(skinParam.getThemeStyle(), skinParam.getIHtmlColorSet());
|
||||
} else {
|
||||
deltaShadow = getSkinParam().shadowing(null) ? 3 : 0;
|
||||
fontConfiguration = new FontConfiguration(getSkinParam(), FontParam.CAPTION, null);
|
||||
stroke = new UStroke();
|
||||
borderColor = HColorUtils.BLACK;
|
||||
}
|
||||
|
||||
final SymbolContext symbolContext = new SymbolContext(getBackgroundColor(), borderColor).withShadow(deltaShadow)
|
||||
.withStroke(stroke);
|
||||
final MinMax originalMinMax = TextBlockUtils.getMinMax(original, stringBounder, false);
|
||||
final TextBlock title = mainFrame.create(new FontConfiguration(getSkinParam(), FontParam.CAPTION, null),
|
||||
HorizontalAlignment.CENTER, getSkinParam());
|
||||
|
||||
final TextBlock title = mainFrame.create(fontConfiguration, HorizontalAlignment.CENTER, getSkinParam());
|
||||
final Dimension2D dimTitle = title.calculateDimension(stringBounder);
|
||||
// final Dimension2D dimOriginal = original.calculateDimension(stringBounder);
|
||||
|
||||
final double width = x1 + Math.max(originalMinMax.getWidth(), dimTitle.getWidth()) + x2;
|
||||
final double height = dimTitle.getHeight() + y1 + originalMinMax.getHeight() + y2;
|
||||
final TextBlock frame = USymbol.FRAME.asBig(title, HorizontalAlignment.LEFT, TextBlockUtils.empty(0, 0), width,
|
||||
@ -143,9 +162,9 @@ public class AnnotatedWorker {
|
||||
|
||||
private TextBlock addLegend(TextBlock original) {
|
||||
final DisplayPositioned legend = annotated.getLegend();
|
||||
if (legend.isNull()) {
|
||||
if (legend.isNull())
|
||||
return original;
|
||||
}
|
||||
|
||||
final TextBlock text = EntityImageLegend.create(legend.getDisplay(), getSkinParam());
|
||||
|
||||
return DecorateEntityImage.add(original, text, legend.getHorizontalAlignment(), legend.getVerticalAlignment());
|
||||
@ -157,18 +176,18 @@ public class AnnotatedWorker {
|
||||
|
||||
private TextBlock addCaption(TextBlock original) {
|
||||
final DisplayPositioned caption = annotated.getCaption();
|
||||
if (caption.isNull()) {
|
||||
if (caption.isNull())
|
||||
return original;
|
||||
}
|
||||
|
||||
final TextBlock text = getCaption();
|
||||
return DecorateEntityImage.addBottom(original, text, HorizontalAlignment.CENTER);
|
||||
}
|
||||
|
||||
public TextBlock getCaption() {
|
||||
final DisplayPositioned caption = annotated.getCaption();
|
||||
if (caption.isNull()) {
|
||||
if (caption.isNull())
|
||||
return TextBlockUtils.empty(0, 0);
|
||||
}
|
||||
|
||||
if (UseStyle.useBetaStyle()) {
|
||||
final Style style = StyleSignature.of(SName.root, SName.document, SName.caption)
|
||||
.getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
@ -180,9 +199,8 @@ public class AnnotatedWorker {
|
||||
|
||||
private TextBlock addTitle(TextBlock original) {
|
||||
final DisplayPositioned title = (DisplayPositioned) annotated.getTitle();
|
||||
if (title.isNull()) {
|
||||
if (title.isNull())
|
||||
return original;
|
||||
}
|
||||
|
||||
final TextBlock block;
|
||||
if (UseStyle.useBetaStyle()) {
|
||||
@ -201,9 +219,9 @@ public class AnnotatedWorker {
|
||||
private TextBlock addHeaderAndFooter(TextBlock original) {
|
||||
final DisplaySection footer = annotated.getFooter();
|
||||
final DisplaySection header = annotated.getHeader();
|
||||
if (footer.isNull() && header.isNull()) {
|
||||
if (footer.isNull() && header.isNull())
|
||||
return original;
|
||||
}
|
||||
|
||||
TextBlock textFooter = null;
|
||||
if (footer.isNull() == false) {
|
||||
Style style = null;
|
||||
|
@ -48,6 +48,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.code.AsciiEncoder;
|
||||
import net.sourceforge.plantuml.code.Transcoder;
|
||||
import net.sourceforge.plantuml.code.TranscoderUtil;
|
||||
@ -70,13 +71,14 @@ public class BlockUml {
|
||||
private final Defines localDefines;
|
||||
private final ISkinSimple skinParam;
|
||||
private final Set<FileWithSuffix> included = new HashSet<>();
|
||||
private final ThemeStyle style;
|
||||
|
||||
public Set<FileWithSuffix> getIncluded() {
|
||||
return Collections.unmodifiableSet(included);
|
||||
}
|
||||
|
||||
BlockUml(String... strings) {
|
||||
this(convert(strings), Defines.createEmpty(), null, null, null);
|
||||
BlockUml(ThemeStyle style, String... strings) {
|
||||
this(style, convert(strings), Defines.createEmpty(), null, null, null);
|
||||
}
|
||||
|
||||
public String getEncodedUrl() throws IOException {
|
||||
@ -113,21 +115,24 @@ public class BlockUml {
|
||||
private boolean preprocessorError;
|
||||
|
||||
/**
|
||||
* @deprecated being kept for backwards compatibility, perhaps other projects are using this?
|
||||
* @deprecated being kept for backwards compatibility, perhaps other projects
|
||||
* are using this?
|
||||
*/
|
||||
@Deprecated
|
||||
public BlockUml(List<StringLocated> strings, Defines defines, ISkinSimple skinParam, PreprocessorModeSet mode) {
|
||||
this(strings, defines, skinParam, mode, charsetOrDefault(mode.getCharset()));
|
||||
this(ThemeStyle.LIGHT_REGULAR, strings, defines, skinParam, mode, charsetOrDefault(mode.getCharset()));
|
||||
}
|
||||
|
||||
public BlockUml(List<StringLocated> strings, Defines defines, ISkinSimple skinParam, PreprocessorModeSet mode, Charset charset) {
|
||||
|
||||
public BlockUml(ThemeStyle style, List<StringLocated> strings, Defines defines, ISkinSimple skinParam,
|
||||
PreprocessorModeSet mode, Charset charset) {
|
||||
this.style = style;
|
||||
this.rawSource = new ArrayList<>(strings);
|
||||
this.localDefines = defines;
|
||||
this.skinParam = skinParam;
|
||||
final String s0 = strings.get(0).getTrimmed().getString();
|
||||
if (StartUtils.startsWithSymbolAnd("start", s0) == false) {
|
||||
if (StartUtils.startsWithSymbolAnd("start", s0) == false)
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
if (mode == null) {
|
||||
this.data = new ArrayList<>(strings);
|
||||
} else {
|
||||
@ -141,39 +146,38 @@ public class BlockUml {
|
||||
}
|
||||
|
||||
public String getFileOrDirname() {
|
||||
if (OptionFlags.getInstance().isWord()) {
|
||||
if (OptionFlags.getInstance().isWord())
|
||||
return null;
|
||||
}
|
||||
|
||||
final Matcher2 m = StartUtils.patternFilename.matcher(StringUtils.trin(data.get(0).getString()));
|
||||
final boolean ok = m.find();
|
||||
if (ok == false) {
|
||||
if (ok == false)
|
||||
return null;
|
||||
}
|
||||
|
||||
String result = m.group(1);
|
||||
final int x = result.indexOf(',');
|
||||
if (x != -1) {
|
||||
if (x != -1)
|
||||
result = result.substring(0, x);
|
||||
}
|
||||
|
||||
for (int i = 0; i < result.length(); i++) {
|
||||
final char c = result.charAt(i);
|
||||
if ("<>|".indexOf(c) != -1) {
|
||||
if ("<>|".indexOf(c) != -1)
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
if (result.startsWith("file://")) {
|
||||
if (result.startsWith("file://"))
|
||||
result = result.substring("file://".length());
|
||||
}
|
||||
|
||||
result = result.replaceAll("\\.\\w\\w\\w$", "");
|
||||
return result;
|
||||
}
|
||||
|
||||
public Diagram getDiagram() {
|
||||
if (system == null) {
|
||||
if (preprocessorError) {
|
||||
if (preprocessorError)
|
||||
system = new PSystemErrorPreprocessor(data, debug);
|
||||
} else {
|
||||
system = new PSystemBuilder().createPSystem(skinParam, data, rawSource);
|
||||
}
|
||||
else
|
||||
system = new PSystemBuilder().createPSystem(style, skinParam, data, rawSource);
|
||||
}
|
||||
return system;
|
||||
}
|
||||
@ -186,9 +190,9 @@ public class BlockUml {
|
||||
try {
|
||||
final AsciiEncoder coder = new AsciiEncoder();
|
||||
final MessageDigest msgDigest = MessageDigest.getInstance("MD5");
|
||||
for (StringLocated s : data) {
|
||||
for (StringLocated s : data)
|
||||
msgDigest.update(s.getString().getBytes(UTF_8));
|
||||
}
|
||||
|
||||
final byte[] digest = msgDigest.digest();
|
||||
return coder.encode(digest);
|
||||
} catch (Exception e) {
|
||||
@ -212,12 +216,12 @@ public class BlockUml {
|
||||
|
||||
public List<String> getDefinition(boolean withHeader) {
|
||||
final List<String> result = new ArrayList<>();
|
||||
for (StringLocated s : data) {
|
||||
for (StringLocated s : data)
|
||||
result.add(s.getString());
|
||||
}
|
||||
if (withHeader) {
|
||||
|
||||
if (withHeader)
|
||||
return Collections.unmodifiableList(result);
|
||||
}
|
||||
|
||||
return Collections.unmodifiableList(result.subList(1, result.size() - 1));
|
||||
}
|
||||
|
||||
|
@ -47,6 +47,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.preproc.Defines;
|
||||
import net.sourceforge.plantuml.preproc.FileWithSuffix;
|
||||
import net.sourceforge.plantuml.preproc.ImportedFiles;
|
||||
@ -65,25 +66,36 @@ public final class BlockUmlBuilder implements DefinitionsContainer {
|
||||
private final Defines defines;
|
||||
private final ImportedFiles importedFiles;
|
||||
private final Charset charset;
|
||||
private final ThemeStyle style;
|
||||
|
||||
/**
|
||||
* @deprecated being kept for backwards compatibility, perhaps other projects are using this?
|
||||
* @deprecated being kept for backwards compatibility, perhaps other projects
|
||||
* are using this?
|
||||
*/
|
||||
@Deprecated
|
||||
public BlockUmlBuilder(List<String> config, String charset, Defines defines, Reader readerInit, SFile newCurrentDir,
|
||||
String desc) throws IOException {
|
||||
|
||||
this(config, charsetOrDefault(charset), defines, readerInit, newCurrentDir, desc);
|
||||
this(ThemeStyle.LIGHT_REGULAR, config, charsetOrDefault(charset), defines, readerInit, newCurrentDir, desc);
|
||||
}
|
||||
|
||||
public BlockUmlBuilder(List<String> config, Charset charset, Defines defines, Reader readerInit, SFile newCurrentDir,
|
||||
String desc) throws IOException {
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated being kept for backwards compatibility, perhaps other projects
|
||||
* are using this?
|
||||
*/
|
||||
@Deprecated
|
||||
public BlockUmlBuilder(List<String> config, String charset, Defines defines, Reader reader) throws IOException {
|
||||
this(config, charset, defines, reader, null, null);
|
||||
}
|
||||
|
||||
public BlockUmlBuilder(ThemeStyle style, List<String> config, Charset charset, Defines defines, Reader readerInit,
|
||||
SFile newCurrentDir, String desc) throws IOException {
|
||||
|
||||
this.style = style;
|
||||
this.defines = defines;
|
||||
this.charset = requireNonNull(charset);
|
||||
this.reader = new UncommentReadLine(ReadLineReader.create(readerInit, desc));
|
||||
this.importedFiles = ImportedFiles.createImportedFiles(new AParentFolderRegular(newCurrentDir));
|
||||
|
||||
|
||||
try (ReadLineNumbered includer = new Preprocessor(config, reader)) {
|
||||
init(includer);
|
||||
} finally {
|
||||
@ -91,14 +103,6 @@ public final class BlockUmlBuilder implements DefinitionsContainer {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated being kept for backwards compatibility, perhaps other projects are using this?
|
||||
*/
|
||||
@Deprecated
|
||||
public BlockUmlBuilder(List<String> config, String charset, Defines defines, Reader reader) throws IOException {
|
||||
this(config, charset, defines, reader, null, null);
|
||||
}
|
||||
|
||||
private void init(ReadLineNumbered includer) throws IOException {
|
||||
StringLocated s = null;
|
||||
List<StringLocated> current = null;
|
||||
@ -121,9 +125,9 @@ public final class BlockUmlBuilder implements DefinitionsContainer {
|
||||
current.add(s);
|
||||
} else if (paused) {
|
||||
final StringLocated append = StartUtils.getPossibleAppend(s);
|
||||
if (append != null) {
|
||||
if (append != null)
|
||||
current.add(append);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (StartUtils.isArobaseUnpauseDiagram(s.getString())) {
|
||||
@ -131,10 +135,10 @@ public final class BlockUmlBuilder implements DefinitionsContainer {
|
||||
reader.setPaused(false);
|
||||
}
|
||||
if (StartUtils.isArobaseEndDiagram(s.getString()) && current != null) {
|
||||
if (paused) {
|
||||
if (paused)
|
||||
current.add(s);
|
||||
}
|
||||
final BlockUml uml = new BlockUml(current, defines.cloneMe(), null, this, charset);
|
||||
|
||||
final BlockUml uml = new BlockUml(style, current, defines.cloneMe(), null, this, charset);
|
||||
usedFiles.addAll(uml.getIncluded());
|
||||
blocks.add(uml);
|
||||
current = null;
|
||||
@ -152,11 +156,10 @@ public final class BlockUmlBuilder implements DefinitionsContainer {
|
||||
}
|
||||
|
||||
public List<String> getDefinition(String name) {
|
||||
for (BlockUml block : blocks) {
|
||||
if (block.isStartDef(name)) {
|
||||
for (BlockUml block : blocks)
|
||||
if (block.isStartDef(name))
|
||||
return block.getDefinition(false);
|
||||
}
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@ -165,7 +168,8 @@ public final class BlockUmlBuilder implements DefinitionsContainer {
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated being kept for backwards compatibility, perhaps other projects are using this?
|
||||
* @deprecated being kept for backwards compatibility, perhaps other projects
|
||||
* are using this?
|
||||
*/
|
||||
@Deprecated
|
||||
public final String getCharset() {
|
||||
|
@ -200,7 +200,8 @@ public class EmbeddedDiagram implements CharSequence {
|
||||
}
|
||||
|
||||
private Diagram getSystem() throws IOException, InterruptedException {
|
||||
final BlockUml blockUml = new BlockUml(system.as2(), Defines.createEmpty(), skinParam, null, null);
|
||||
final BlockUml blockUml = new BlockUml(skinParam.getThemeStyle(), system.as2(), Defines.createEmpty(),
|
||||
skinParam, null, null);
|
||||
return blockUml.getDiagram();
|
||||
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ import java.awt.geom.AffineTransform;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.graphic.StringBounder;
|
||||
|
||||
/**
|
||||
@ -59,23 +60,23 @@ public final class FileFormatOption implements Serializable {
|
||||
private final double scale;
|
||||
private final String preserveAspectRatio;
|
||||
private final String watermark;
|
||||
private final ThemeStyle style;
|
||||
|
||||
public double getScaleCoef() {
|
||||
return scale;
|
||||
}
|
||||
|
||||
public FileFormatOption(FileFormat fileFormat) {
|
||||
this(fileFormat, true, false, null, false, null, TikzFontDistortion.getDefault(), 1.0, null, null);
|
||||
this(fileFormat, true, false, null, false, null, TikzFontDistortion.getDefault(), 1.0, null, null, ThemeStyle.LIGHT_REGULAR);
|
||||
}
|
||||
|
||||
public FileFormatOption(FileFormat fileFormat, boolean withMetadata) {
|
||||
this(fileFormat, withMetadata, false, null, false, null, TikzFontDistortion.getDefault(), 1.0, null,
|
||||
null);
|
||||
this(fileFormat, withMetadata, false, null, false, null, TikzFontDistortion.getDefault(), 1.0, null, null, ThemeStyle.LIGHT_REGULAR);
|
||||
}
|
||||
|
||||
private FileFormatOption(FileFormat fileFormat, boolean withMetadata, boolean useRedForError,
|
||||
String svgLinkTarget, boolean debugsvek, String hoverColor, TikzFontDistortion tikzFontDistortion,
|
||||
double scale, String preserveAspectRatio, String watermark) {
|
||||
private FileFormatOption(FileFormat fileFormat, boolean withMetadata, boolean useRedForError, String svgLinkTarget,
|
||||
boolean debugsvek, String hoverColor, TikzFontDistortion tikzFontDistortion, double scale,
|
||||
String preserveAspectRatio, String watermark, ThemeStyle style) {
|
||||
this.hoverColor = hoverColor;
|
||||
this.watermark = watermark;
|
||||
this.fileFormat = fileFormat;
|
||||
@ -86,6 +87,7 @@ public final class FileFormatOption implements Serializable {
|
||||
this.tikzFontDistortion = Objects.requireNonNull(tikzFontDistortion);
|
||||
this.scale = scale;
|
||||
this.preserveAspectRatio = preserveAspectRatio;
|
||||
this.style = style;
|
||||
}
|
||||
|
||||
public StringBounder getDefaultStringBounder(SvgCharSizeHack charSizeHack) {
|
||||
@ -105,38 +107,43 @@ public final class FileFormatOption implements Serializable {
|
||||
}
|
||||
|
||||
public FileFormatOption withUseRedForError() {
|
||||
return new FileFormatOption(fileFormat, withMetadata, true, svgLinkTarget, debugsvek,
|
||||
hoverColor, tikzFontDistortion, scale, preserveAspectRatio, watermark);
|
||||
return new FileFormatOption(fileFormat, withMetadata, true, svgLinkTarget, debugsvek, hoverColor,
|
||||
tikzFontDistortion, scale, preserveAspectRatio, watermark, style);
|
||||
}
|
||||
|
||||
public FileFormatOption withTikzFontDistortion(TikzFontDistortion tikzFontDistortion) {
|
||||
return new FileFormatOption(fileFormat, withMetadata, true, svgLinkTarget, debugsvek,
|
||||
hoverColor, tikzFontDistortion, scale, preserveAspectRatio, watermark);
|
||||
return new FileFormatOption(fileFormat, withMetadata, true, svgLinkTarget, debugsvek, hoverColor,
|
||||
tikzFontDistortion, scale, preserveAspectRatio, watermark, style);
|
||||
}
|
||||
|
||||
public FileFormatOption withSvgLinkTarget(String svgLinkTarget) {
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek,
|
||||
hoverColor, tikzFontDistortion, scale, preserveAspectRatio, watermark);
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek, hoverColor,
|
||||
tikzFontDistortion, scale, preserveAspectRatio, watermark, style);
|
||||
}
|
||||
|
||||
public FileFormatOption withPreserveAspectRatio(String preserveAspectRatio) {
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek,
|
||||
hoverColor, tikzFontDistortion, scale, preserveAspectRatio, watermark);
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek, hoverColor,
|
||||
tikzFontDistortion, scale, preserveAspectRatio, watermark, style);
|
||||
}
|
||||
|
||||
public FileFormatOption withHoverColor(String hoverColor) {
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek,
|
||||
hoverColor, tikzFontDistortion, scale, preserveAspectRatio, watermark);
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek, hoverColor,
|
||||
tikzFontDistortion, scale, preserveAspectRatio, watermark, style);
|
||||
}
|
||||
|
||||
public FileFormatOption withScale(double scale) {
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek,
|
||||
hoverColor, tikzFontDistortion, scale, preserveAspectRatio, watermark);
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek, hoverColor,
|
||||
tikzFontDistortion, scale, preserveAspectRatio, watermark, style);
|
||||
}
|
||||
|
||||
public FileFormatOption withWartermark(String watermark) {
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek,
|
||||
hoverColor, tikzFontDistortion, scale, preserveAspectRatio, watermark);
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek, hoverColor,
|
||||
tikzFontDistortion, scale, preserveAspectRatio, watermark, style);
|
||||
}
|
||||
|
||||
public FileFormatOption withStyle(ThemeStyle style) {
|
||||
return new FileFormatOption(fileFormat, withMetadata, useRedForError, svgLinkTarget, debugsvek, hoverColor,
|
||||
tikzFontDistortion, scale, preserveAspectRatio, watermark, style);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -183,4 +190,8 @@ public final class FileFormatOption implements Serializable {
|
||||
return watermark;
|
||||
}
|
||||
|
||||
public ThemeStyle getStyle() {
|
||||
return style;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -194,6 +194,6 @@ public interface ISkinParam extends ISkinSimple {
|
||||
|
||||
public LengthAdjust getlengthAdjust();
|
||||
|
||||
public void assumeTransparent(ThemeStyle style);
|
||||
// public void assumeTransparent(ThemeStyle style);
|
||||
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ package net.sourceforge.plantuml;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.ugraphic.color.ColorMapper;
|
||||
import net.sourceforge.plantuml.ugraphic.color.HColorSet;
|
||||
|
||||
@ -63,5 +64,7 @@ public interface ISkinSimple extends SpriteContainer {
|
||||
public void copyAllFrom(ISkinSimple other);
|
||||
|
||||
public double minClassWidth();
|
||||
|
||||
public ThemeStyle getThemeStyle();
|
||||
|
||||
}
|
@ -43,6 +43,7 @@ import net.sourceforge.plantuml.acearth.PSystemXearthFactory;
|
||||
import net.sourceforge.plantuml.activitydiagram.ActivityDiagramFactory;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ActivityDiagramFactory3;
|
||||
import net.sourceforge.plantuml.api.PSystemFactory;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.board.BoardDiagramFactory;
|
||||
import net.sourceforge.plantuml.bpm.BpmDiagramFactory;
|
||||
import net.sourceforge.plantuml.classdiagram.ClassDiagramFactory;
|
||||
@ -105,7 +106,7 @@ public class PSystemBuilder {
|
||||
|
||||
public static final long startTime = System.currentTimeMillis();
|
||||
|
||||
final public Diagram createPSystem(ISkinSimple skinParam, List<StringLocated> source,
|
||||
final public Diagram createPSystem(ThemeStyle style, ISkinSimple skinParam, List<StringLocated> source,
|
||||
List<StringLocated> rawSource) {
|
||||
|
||||
final long now = System.currentTimeMillis();
|
||||
@ -129,10 +130,10 @@ public class PSystemBuilder {
|
||||
final DiagramType diagramType = umlSource.getDiagramType();
|
||||
final List<PSystemError> errors = new ArrayList<>();
|
||||
for (PSystemFactory systemFactory : factories) {
|
||||
if (diagramType != systemFactory.getDiagramType()) {
|
||||
if (diagramType != systemFactory.getDiagramType())
|
||||
continue;
|
||||
}
|
||||
final Diagram sys = systemFactory.createSystem(umlSource, skinParam);
|
||||
|
||||
final Diagram sys = systemFactory.createSystem(style, umlSource, skinParam);
|
||||
if (isOk(sys)) {
|
||||
result = sys;
|
||||
return sys;
|
||||
@ -140,9 +141,8 @@ public class PSystemBuilder {
|
||||
errors.add((PSystemError) sys);
|
||||
}
|
||||
|
||||
final PSystemError err = PSystemErrorUtils.merge(errors);
|
||||
result = err;
|
||||
return err;
|
||||
result = PSystemErrorUtils.merge(errors);
|
||||
return result;
|
||||
} finally {
|
||||
if (result != null && OptionFlags.getInstance().isEnableStats()) {
|
||||
StatsUtilsIncrement.onceMoreParse(System.currentTimeMillis() - now, result.getClass());
|
||||
@ -228,9 +228,9 @@ public class PSystemBuilder {
|
||||
}
|
||||
|
||||
private boolean isOk(Diagram ps) {
|
||||
if (ps == null || ps instanceof PSystemError) {
|
||||
if (ps == null || ps instanceof PSystemError)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,7 @@ import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.BlocLines;
|
||||
import net.sourceforge.plantuml.command.regex.Matcher2;
|
||||
import net.sourceforge.plantuml.command.regex.MyPattern;
|
||||
@ -79,6 +80,7 @@ import net.sourceforge.plantuml.svg.LengthAdjust;
|
||||
import net.sourceforge.plantuml.ugraphic.UFont;
|
||||
import net.sourceforge.plantuml.ugraphic.UStroke;
|
||||
import net.sourceforge.plantuml.ugraphic.color.ColorMapper;
|
||||
import net.sourceforge.plantuml.ugraphic.color.ColorMapperForceDark;
|
||||
import net.sourceforge.plantuml.ugraphic.color.ColorMapperIdentity;
|
||||
import net.sourceforge.plantuml.ugraphic.color.ColorMapperLightnessInverse;
|
||||
import net.sourceforge.plantuml.ugraphic.color.ColorMapperMonochrome;
|
||||
@ -95,40 +97,42 @@ public class SkinParam implements ISkinParam {
|
||||
public static final String DEFAULT_PRESERVE_ASPECT_RATIO = "none";
|
||||
|
||||
// private String skin = "debug.skin";
|
||||
|
||||
private String skin = "plantuml.skin";
|
||||
private StyleBuilder styleBuilder;
|
||||
// private ThemeStyle themeStyle = ThemeStyle.LIGHT_REGULAR;
|
||||
private final ThemeStyle themeStyle;
|
||||
|
||||
private SkinParam(UmlDiagramType type) {
|
||||
UseStyle.setBetaStyle(false);
|
||||
private SkinParam(UmlDiagramType type, ThemeStyle style) {
|
||||
this.themeStyle = style;
|
||||
this.type = type;
|
||||
if (type == UmlDiagramType.MINDMAP) {
|
||||
UseStyle.setBetaStyle(false);
|
||||
if (type == UmlDiagramType.MINDMAP)
|
||||
UseStyle.setBetaStyle(true);
|
||||
}
|
||||
if (type == UmlDiagramType.WBS) {
|
||||
|
||||
if (type == UmlDiagramType.WBS)
|
||||
UseStyle.setBetaStyle(true);
|
||||
}
|
||||
if (type == UmlDiagramType.GANTT) {
|
||||
|
||||
if (type == UmlDiagramType.GANTT)
|
||||
UseStyle.setBetaStyle(true);
|
||||
}
|
||||
if (type == UmlDiagramType.JSON) {
|
||||
|
||||
if (type == UmlDiagramType.JSON)
|
||||
UseStyle.setBetaStyle(true);
|
||||
}
|
||||
if (type == UmlDiagramType.GIT) {
|
||||
|
||||
if (type == UmlDiagramType.GIT)
|
||||
UseStyle.setBetaStyle(true);
|
||||
}
|
||||
if (type == UmlDiagramType.BOARD) {
|
||||
|
||||
if (type == UmlDiagramType.BOARD)
|
||||
UseStyle.setBetaStyle(true);
|
||||
}
|
||||
if (type == UmlDiagramType.YAML) {
|
||||
|
||||
if (type == UmlDiagramType.YAML)
|
||||
UseStyle.setBetaStyle(true);
|
||||
}
|
||||
if (type == UmlDiagramType.HCL) {
|
||||
|
||||
if (type == UmlDiagramType.HCL)
|
||||
UseStyle.setBetaStyle(true);
|
||||
}
|
||||
if (type == UmlDiagramType.NWDIAG) {
|
||||
|
||||
if (type == UmlDiagramType.NWDIAG)
|
||||
UseStyle.setBetaStyle(true);
|
||||
}
|
||||
|
||||
if (type == UmlDiagramType.SEQUENCE) {
|
||||
// skin = "debug.skin";
|
||||
// USE_STYLE2.set(true);
|
||||
@ -166,9 +170,9 @@ public class SkinParam implements ISkinParam {
|
||||
public StyleBuilder getCurrentStyleBuilderInternal() throws IOException {
|
||||
final StyleLoader tmp = new StyleLoader(this);
|
||||
StyleBuilder result = tmp.loadSkin(this.getDefaultSkin());
|
||||
if (result == null) {
|
||||
if (result == null)
|
||||
result = tmp.loadSkin("plantuml.skin");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -205,7 +209,6 @@ public class SkinParam implements ISkinParam {
|
||||
final FromSkinparamToStyle convertor = new FromSkinparamToStyle(key2, value, getCurrentStyleBuilder());
|
||||
for (Style style : convertor.getStyles())
|
||||
muteStyle(style);
|
||||
|
||||
} else {
|
||||
paramsPendingForStyleMigration.put(key, value);
|
||||
}
|
||||
@ -216,9 +219,9 @@ public class SkinParam implements ISkinParam {
|
||||
final StyleBuilder styleBuilder = this.getCurrentStyleBuilder();
|
||||
try {
|
||||
final BlocLines lines = BlocLines.load(internalIs, null);
|
||||
for (Style modifiedStyle : StyleLoader.getDeclaredStyles(lines, styleBuilder)) {
|
||||
for (Style modifiedStyle : StyleLoader.getDeclaredStyles(lines, styleBuilder))
|
||||
this.muteStyle(modifiedStyle);
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -236,12 +239,12 @@ public class SkinParam implements ISkinParam {
|
||||
paramsPendingForStyleMigration.clear();
|
||||
}
|
||||
|
||||
public static SkinParam create(UmlDiagramType type) {
|
||||
return new SkinParam(type);
|
||||
public static SkinParam create(UmlDiagramType type, ThemeStyle style) {
|
||||
return new SkinParam(type, style);
|
||||
}
|
||||
|
||||
public static SkinParam noShadowing(UmlDiagramType type) {
|
||||
final SkinParam result = new SkinParam(type);
|
||||
public static SkinParam noShadowing(UmlDiagramType type, ThemeStyle style) {
|
||||
final SkinParam result = new SkinParam(type, style);
|
||||
result.setParam("shadowing", "false");
|
||||
return result;
|
||||
}
|
||||
@ -277,9 +280,9 @@ public class SkinParam implements ISkinParam {
|
||||
final String s = mm.group(1);
|
||||
result.add(key.replaceAll(stereoPatternString, "") + "<<" + s + ">>");
|
||||
}
|
||||
if (result.size() == 0) {
|
||||
if (result.size() == 0)
|
||||
result.add(key);
|
||||
}
|
||||
|
||||
return Collections.unmodifiableList(result);
|
||||
}
|
||||
|
||||
@ -292,9 +295,9 @@ public class SkinParam implements ISkinParam {
|
||||
|
||||
public HColor getHyperlinkColor() {
|
||||
final HColor result = getHtmlColor(ColorParam.hyperlink, null, false);
|
||||
if (result == null) {
|
||||
if (result == null)
|
||||
return HColorUtils.BLUE;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -308,9 +311,9 @@ public class SkinParam implements ISkinParam {
|
||||
applyPendingStyleMigration();
|
||||
for (String key2 : cleanForKey(key)) {
|
||||
final String result = params.get(key2);
|
||||
if (result != null) {
|
||||
if (result != null)
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -348,9 +351,9 @@ public class SkinParam implements ISkinParam {
|
||||
checkStereotype(stereotype);
|
||||
for (String s : stereotype.getMultipleLabels()) {
|
||||
final String value2 = getValue(param.name() + "color" + "<<" + s + ">>");
|
||||
if (value2 != null && getIHtmlColorSet().getColorOrWhite(themeStyle, value2) != null) {
|
||||
if (value2 != null && getIHtmlColorSet().getColorOrWhite(themeStyle, value2) != null)
|
||||
return getIHtmlColorSet().getColorOrWhite(themeStyle, value2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
final String value = getValue(getParamName(param, clickable));
|
||||
@ -373,9 +376,9 @@ public class SkinParam implements ISkinParam {
|
||||
public char getCircledCharacter(Stereotype stereotype) {
|
||||
final String value2 = getValue(
|
||||
"spotchar" + Objects.requireNonNull(stereotype).getLabel(Guillemet.DOUBLE_COMPARATOR));
|
||||
if (value2 != null && value2.length() > 0) {
|
||||
if (value2 != null && value2.length() > 0)
|
||||
return value2.charAt(0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -383,24 +386,24 @@ public class SkinParam implements ISkinParam {
|
||||
if (stereotype != null) {
|
||||
checkStereotype(stereotype);
|
||||
final String value2 = getValue(param.name() + "color" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR));
|
||||
if (value2 != null) {
|
||||
if (value2 != null)
|
||||
return new Colors(themeStyle, value2, getIHtmlColorSet(), param.getColorType());
|
||||
}
|
||||
|
||||
}
|
||||
final String value = getValue(getParamName(param, false));
|
||||
if (value == null) {
|
||||
if (value == null)
|
||||
return Colors.empty();
|
||||
}
|
||||
|
||||
return new Colors(themeStyle, value, getIHtmlColorSet(), param.getColorType());
|
||||
}
|
||||
|
||||
private String getParamName(ColorParam param, boolean clickable) {
|
||||
String n = param.name();
|
||||
if (clickable && n.endsWith("Background")) {
|
||||
if (clickable && n.endsWith("Background"))
|
||||
n = n.replaceAll("Background", "ClickableBackground");
|
||||
} else if (clickable && n.endsWith("Border")) {
|
||||
else if (clickable && n.endsWith("Border"))
|
||||
n = n.replaceAll("Border", "ClickableBorder");
|
||||
}
|
||||
|
||||
return n + "color";
|
||||
}
|
||||
|
||||
@ -416,17 +419,17 @@ public class SkinParam implements ISkinParam {
|
||||
checkStereotype(stereotype);
|
||||
final String value2 = getFirstValueNonNullWithSuffix(
|
||||
"fontsize" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR), param);
|
||||
if (value2 != null && value2.matches("\\d+")) {
|
||||
if (value2 != null && value2.matches("\\d+"))
|
||||
return Integer.parseInt(value2);
|
||||
}
|
||||
|
||||
}
|
||||
String value = getFirstValueNonNullWithSuffix("fontsize", param);
|
||||
if (value == null || value.matches("\\d+") == false) {
|
||||
if (value == null || value.matches("\\d+") == false)
|
||||
value = getValue("defaultfontsize");
|
||||
}
|
||||
if (value == null || value.matches("\\d+") == false) {
|
||||
|
||||
if (value == null || value.matches("\\d+") == false)
|
||||
return param[0].getDefaultSize(this);
|
||||
}
|
||||
|
||||
return Integer.parseInt(value);
|
||||
}
|
||||
|
||||
@ -435,20 +438,20 @@ public class SkinParam implements ISkinParam {
|
||||
checkStereotype(stereotype);
|
||||
final String value2 = getFirstValueNonNullWithSuffix(
|
||||
"fontname" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR), param);
|
||||
if (value2 != null) {
|
||||
if (value2 != null)
|
||||
return StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(value2);
|
||||
}
|
||||
|
||||
}
|
||||
// Times, Helvetica, Courier or Symbol
|
||||
String value = getFirstValueNonNullWithSuffix("fontname", param);
|
||||
if (value != null) {
|
||||
if (value != null)
|
||||
return StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(value);
|
||||
}
|
||||
|
||||
if (param[0] != FontParam.CIRCLED_CHARACTER) {
|
||||
value = getValue("defaultfontname");
|
||||
if (value != null) {
|
||||
if (value != null)
|
||||
return StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(value);
|
||||
}
|
||||
|
||||
}
|
||||
return param[0].getDefaultFamily();
|
||||
}
|
||||
@ -460,27 +463,28 @@ public class SkinParam implements ISkinParam {
|
||||
value = getFirstValueNonNullWithSuffix("fontcolor" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR),
|
||||
param);
|
||||
}
|
||||
if (value == null) {
|
||||
|
||||
if (value == null)
|
||||
value = getFirstValueNonNullWithSuffix("fontcolor", param);
|
||||
}
|
||||
if (value == null) {
|
||||
|
||||
if (value == null)
|
||||
value = getValue("defaultfontcolor");
|
||||
}
|
||||
if (value == null) {
|
||||
|
||||
if (value == null)
|
||||
value = param[0].getDefaultColor();
|
||||
}
|
||||
if (value == null) {
|
||||
|
||||
if (value == null)
|
||||
return null;
|
||||
}
|
||||
|
||||
return getIHtmlColorSet().getColorOrWhite(themeStyle, value);
|
||||
}
|
||||
|
||||
private String getFirstValueNonNullWithSuffix(String suffix, FontParam... param) {
|
||||
for (FontParam p : param) {
|
||||
final String v = getValue(p.name() + suffix);
|
||||
if (v != null) {
|
||||
if (v != null)
|
||||
return v;
|
||||
}
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -492,29 +496,29 @@ public class SkinParam implements ISkinParam {
|
||||
value = getFirstValueNonNullWithSuffix("fontstyle" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR),
|
||||
param);
|
||||
}
|
||||
if (value == null) {
|
||||
if (value == null)
|
||||
value = getFirstValueNonNullWithSuffix("fontstyle", param);
|
||||
}
|
||||
if (value == null) {
|
||||
|
||||
if (value == null)
|
||||
value = getValue("defaultfontstyle");
|
||||
}
|
||||
if (value == null) {
|
||||
|
||||
if (value == null)
|
||||
return param[0].getDefaultFontStyle(this, inPackageTitle);
|
||||
}
|
||||
|
||||
int result = Font.PLAIN;
|
||||
if (StringUtils.goLowerCase(value).contains("bold")) {
|
||||
if (StringUtils.goLowerCase(value).contains("bold"))
|
||||
result = result | Font.BOLD;
|
||||
}
|
||||
if (StringUtils.goLowerCase(value).contains("italic")) {
|
||||
|
||||
if (StringUtils.goLowerCase(value).contains("italic"))
|
||||
result = result | Font.ITALIC;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public UFont getFont(Stereotype stereotype, boolean inPackageTitle, FontParam... fontParam) {
|
||||
if (stereotype != null) {
|
||||
if (stereotype != null)
|
||||
checkStereotype(stereotype);
|
||||
}
|
||||
|
||||
final String fontFamily = getFontFamily(stereotype, fontParam);
|
||||
final int fontStyle = getFontStyle(stereotype, inPackageTitle, fontParam);
|
||||
final int fontSize = getFontSize(stereotype, fontParam);
|
||||
@ -622,12 +626,12 @@ public class SkinParam implements ISkinParam {
|
||||
|
||||
public DotSplines getDotSplines() {
|
||||
final String value = getValue("linetype");
|
||||
if ("polyline".equalsIgnoreCase(value)) {
|
||||
if ("polyline".equalsIgnoreCase(value))
|
||||
return DotSplines.POLYLINE;
|
||||
}
|
||||
if ("ortho".equalsIgnoreCase(value)) {
|
||||
|
||||
if ("ortho".equalsIgnoreCase(value))
|
||||
return DotSplines.ORTHO;
|
||||
}
|
||||
|
||||
return DotSplines.SPLINES;
|
||||
}
|
||||
|
||||
@ -646,98 +650,101 @@ public class SkinParam implements ISkinParam {
|
||||
}
|
||||
if ("first".equalsIgnoreCase(value)) {
|
||||
if (arrowDirection == ArrowDirection.RIGHT_TO_LEFT_REVERSE) {
|
||||
if (isReverseDefine) {
|
||||
if (isReverseDefine)
|
||||
return HorizontalAlignment.LEFT;
|
||||
}
|
||||
|
||||
return HorizontalAlignment.RIGHT;
|
||||
} else {
|
||||
if (isReverseDefine) {
|
||||
if (isReverseDefine)
|
||||
return HorizontalAlignment.RIGHT;
|
||||
}
|
||||
|
||||
return HorizontalAlignment.LEFT;
|
||||
}
|
||||
}
|
||||
if ("direction".equalsIgnoreCase(value)) {
|
||||
if (arrowDirection == ArrowDirection.LEFT_TO_RIGHT_NORMAL) {
|
||||
if (arrowDirection == ArrowDirection.LEFT_TO_RIGHT_NORMAL)
|
||||
return HorizontalAlignment.LEFT;
|
||||
}
|
||||
if (arrowDirection == ArrowDirection.RIGHT_TO_LEFT_REVERSE) {
|
||||
|
||||
if (arrowDirection == ArrowDirection.RIGHT_TO_LEFT_REVERSE)
|
||||
return HorizontalAlignment.RIGHT;
|
||||
}
|
||||
if (arrowDirection == ArrowDirection.BOTH_DIRECTION) {
|
||||
|
||||
if (arrowDirection == ArrowDirection.BOTH_DIRECTION)
|
||||
return HorizontalAlignment.CENTER;
|
||||
}
|
||||
|
||||
}
|
||||
if ("reversedirection".equalsIgnoreCase(value)) {
|
||||
if (arrowDirection == ArrowDirection.LEFT_TO_RIGHT_NORMAL) {
|
||||
if (arrowDirection == ArrowDirection.LEFT_TO_RIGHT_NORMAL)
|
||||
return HorizontalAlignment.RIGHT;
|
||||
}
|
||||
if (arrowDirection == ArrowDirection.RIGHT_TO_LEFT_REVERSE) {
|
||||
|
||||
if (arrowDirection == ArrowDirection.RIGHT_TO_LEFT_REVERSE)
|
||||
return HorizontalAlignment.LEFT;
|
||||
}
|
||||
if (arrowDirection == ArrowDirection.BOTH_DIRECTION) {
|
||||
|
||||
if (arrowDirection == ArrowDirection.BOTH_DIRECTION)
|
||||
return HorizontalAlignment.CENTER;
|
||||
}
|
||||
|
||||
}
|
||||
final HorizontalAlignment result = HorizontalAlignment.fromString(value);
|
||||
if (result == null && param == AlignmentParam.noteTextAlignment) {
|
||||
if (result == null && param == AlignmentParam.noteTextAlignment)
|
||||
return getDefaultTextAlignment(overrideDefault == null ? HorizontalAlignment.LEFT : overrideDefault);
|
||||
} else if (result == null && param == AlignmentParam.stateMessageAlignment) {
|
||||
else if (result == null && param == AlignmentParam.stateMessageAlignment)
|
||||
return getDefaultTextAlignment(HorizontalAlignment.CENTER);
|
||||
} else if (result == null) {
|
||||
else if (result == null)
|
||||
return param.getDefaultValue();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public HorizontalAlignment getDefaultTextAlignment(HorizontalAlignment defaultValue) {
|
||||
final String value = getValue("defaulttextalignment");
|
||||
final HorizontalAlignment result = HorizontalAlignment.fromString(value);
|
||||
if (result == null) {
|
||||
if (result == null)
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public HorizontalAlignment getStereotypeAlignment() {
|
||||
final String value = getValue("stereotypealignment");
|
||||
final HorizontalAlignment result = HorizontalAlignment.fromString(value);
|
||||
if (result == null) {
|
||||
if (result == null)
|
||||
return HorizontalAlignment.CENTER;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private String getArg(String value, int i) {
|
||||
if (value == null) {
|
||||
if (value == null)
|
||||
return null;
|
||||
}
|
||||
|
||||
final String[] split = value.split(":");
|
||||
if (i >= split.length) {
|
||||
if (i >= split.length)
|
||||
return split[0];
|
||||
}
|
||||
|
||||
return split[i];
|
||||
}
|
||||
|
||||
public ColorMapper getColorMapper() {
|
||||
if (themeStyle == ThemeStyle.DARK)
|
||||
return new ColorMapperForceDark();
|
||||
|
||||
final String monochrome = getValue("monochrome");
|
||||
if ("true".equals(monochrome)) {
|
||||
if ("true".equals(monochrome))
|
||||
return new ColorMapperMonochrome(false);
|
||||
}
|
||||
if ("reverse".equals(monochrome)) {
|
||||
|
||||
if ("reverse".equals(monochrome))
|
||||
return new ColorMapperMonochrome(true);
|
||||
}
|
||||
|
||||
final String value = getValue("reversecolor");
|
||||
if (value == null) {
|
||||
if (value == null)
|
||||
return new ColorMapperIdentity();
|
||||
}
|
||||
if ("dark".equalsIgnoreCase(value)) {
|
||||
|
||||
if ("dark".equalsIgnoreCase(value))
|
||||
return new ColorMapperLightnessInverse();
|
||||
}
|
||||
|
||||
final ColorOrder order = ColorOrder.fromString(value);
|
||||
if (order == null) {
|
||||
if (order == null)
|
||||
return new ColorMapperIdentity();
|
||||
}
|
||||
|
||||
return new ColorMapperReverse(order);
|
||||
}
|
||||
|
||||
@ -745,20 +752,20 @@ public class SkinParam implements ISkinParam {
|
||||
if (stereotype != null) {
|
||||
checkStereotype(stereotype);
|
||||
final String value2 = getValue("shadowing" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR));
|
||||
if (value2 != null) {
|
||||
if (value2 != null)
|
||||
return value2.equalsIgnoreCase("true");
|
||||
}
|
||||
|
||||
}
|
||||
final String value = getValue("shadowing");
|
||||
if ("false".equalsIgnoreCase(value)) {
|
||||
if ("false".equalsIgnoreCase(value))
|
||||
return false;
|
||||
}
|
||||
if ("true".equalsIgnoreCase(value)) {
|
||||
|
||||
if ("true".equalsIgnoreCase(value))
|
||||
return true;
|
||||
}
|
||||
if (strictUmlStyle()) {
|
||||
|
||||
if (strictUmlStyle())
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -766,14 +773,14 @@ public class SkinParam implements ISkinParam {
|
||||
if (stereotype != null) {
|
||||
checkStereotype(stereotype);
|
||||
final String value2 = getValue("note" + "shadowing" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR));
|
||||
if (value2 != null) {
|
||||
if (value2 != null)
|
||||
return value2.equalsIgnoreCase("true");
|
||||
}
|
||||
|
||||
}
|
||||
final String value2 = getValue("note" + "shadowing");
|
||||
if (value2 != null) {
|
||||
if (value2 != null)
|
||||
return value2.equalsIgnoreCase("true");
|
||||
}
|
||||
|
||||
return shadowing(stereotype);
|
||||
}
|
||||
|
||||
@ -782,24 +789,24 @@ public class SkinParam implements ISkinParam {
|
||||
if (stereotype != null) {
|
||||
checkStereotype(stereotype);
|
||||
final String value2 = getValue(name + "shadowing" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR));
|
||||
if (value2 != null) {
|
||||
if (value2 != null)
|
||||
return value2.equalsIgnoreCase("true");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
final String value = getValue(name + "shadowing");
|
||||
if (value == null) {
|
||||
if (value == null)
|
||||
return shadowing(stereotype);
|
||||
}
|
||||
if ("false".equalsIgnoreCase(value)) {
|
||||
|
||||
if ("false".equalsIgnoreCase(value))
|
||||
return false;
|
||||
}
|
||||
if ("true".equalsIgnoreCase(value)) {
|
||||
|
||||
if ("true".equalsIgnoreCase(value))
|
||||
return true;
|
||||
}
|
||||
if (strictUmlStyle()) {
|
||||
|
||||
if (strictUmlStyle())
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -815,25 +822,25 @@ public class SkinParam implements ISkinParam {
|
||||
|
||||
public Sprite getSprite(String name) {
|
||||
Sprite result = sprites.get(name);
|
||||
if (result == null) {
|
||||
if (result == null)
|
||||
result = SpriteImage.fromInternal(name);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public PackageStyle packageStyle() {
|
||||
final String value = getValue("packageStyle");
|
||||
final PackageStyle p = PackageStyle.fromString(value);
|
||||
if (p == null) {
|
||||
if (p == null)
|
||||
return PackageStyle.FOLDER;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
public ComponentStyle componentStyle() {
|
||||
if (strictUmlStyle()) {
|
||||
if (strictUmlStyle())
|
||||
return ComponentStyle.UML2;
|
||||
}
|
||||
|
||||
final String value = getValue("componentstyle");
|
||||
if ("uml1".equalsIgnoreCase(value))
|
||||
return ComponentStyle.UML1;
|
||||
@ -849,9 +856,9 @@ public class SkinParam implements ISkinParam {
|
||||
}
|
||||
|
||||
public boolean useSwimlanes(UmlDiagramType type) {
|
||||
if (type != UmlDiagramType.ACTIVITY) {
|
||||
if (type != UmlDiagramType.ACTIVITY)
|
||||
return false;
|
||||
}
|
||||
|
||||
return swimlanes();
|
||||
}
|
||||
|
||||
@ -872,43 +879,43 @@ public class SkinParam implements ISkinParam {
|
||||
public double getDiagonalCorner(CornerParam param, Stereotype stereotype) {
|
||||
final String key = param.getDiagonalKey();
|
||||
Double result = getCornerInternal(key, param, stereotype);
|
||||
if (result != null) {
|
||||
if (result != null)
|
||||
return result;
|
||||
}
|
||||
|
||||
result = getCornerInternal(key, param, null);
|
||||
if (result != null) {
|
||||
if (result != null)
|
||||
return result;
|
||||
}
|
||||
if (param == CornerParam.DEFAULT) {
|
||||
|
||||
if (param == CornerParam.DEFAULT)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return getDiagonalCorner(CornerParam.DEFAULT, stereotype);
|
||||
}
|
||||
|
||||
public double getRoundCorner(CornerParam param, Stereotype stereotype) {
|
||||
final String key = param.getRoundKey();
|
||||
Double result = getCornerInternal(key, param, stereotype);
|
||||
if (result != null) {
|
||||
if (result != null)
|
||||
return result;
|
||||
}
|
||||
|
||||
result = getCornerInternal(key, param, null);
|
||||
if (result != null) {
|
||||
if (result != null)
|
||||
return result;
|
||||
}
|
||||
if (param == CornerParam.DEFAULT) {
|
||||
|
||||
if (param == CornerParam.DEFAULT)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return getRoundCorner(CornerParam.DEFAULT, stereotype);
|
||||
}
|
||||
|
||||
private Double getCornerInternal(String key, CornerParam param, Stereotype stereotype) {
|
||||
if (stereotype != null) {
|
||||
if (stereotype != null)
|
||||
key += stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR);
|
||||
}
|
||||
|
||||
final String value = getValue(key);
|
||||
if (value != null && value.matches("\\d+")) {
|
||||
if (value != null && value.matches("\\d+"))
|
||||
return Double.parseDouble(value);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -919,43 +926,42 @@ public class SkinParam implements ISkinParam {
|
||||
|
||||
final String styleValue = getValue(
|
||||
param.name() + "style" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR));
|
||||
if (styleValue != null) {
|
||||
if (styleValue != null)
|
||||
style = LinkStyle.fromString2(styleValue);
|
||||
}
|
||||
|
||||
final String value2 = getValue(
|
||||
param.name() + "thickness" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR));
|
||||
if (value2 != null && value2.matches("[\\d.]+")) {
|
||||
if (style == null) {
|
||||
if (style == null)
|
||||
style = LinkStyle.NORMAL();
|
||||
}
|
||||
|
||||
return style.goThickness(Double.parseDouble(value2)).getStroke3();
|
||||
}
|
||||
}
|
||||
final String value = getValue(param.name() + "thickness");
|
||||
if (value != null && value.matches("[\\d.]+")) {
|
||||
if (style == null) {
|
||||
if (style == null)
|
||||
style = LinkStyle.NORMAL();
|
||||
}
|
||||
|
||||
return style.goThickness(Double.parseDouble(value)).getStroke3();
|
||||
}
|
||||
if (style == null) {
|
||||
final String styleValue = getValue(param.name() + "style");
|
||||
if (styleValue != null) {
|
||||
if (styleValue != null)
|
||||
style = LinkStyle.fromString2(styleValue);
|
||||
}
|
||||
|
||||
}
|
||||
if (style != null && style.isNormal() == false) {
|
||||
if (style != null && style.isNormal() == false)
|
||||
return style.getStroke3();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public LineBreakStrategy maxMessageSize() {
|
||||
String value = getValue("wrapmessagewidth");
|
||||
if (value == null) {
|
||||
if (value == null)
|
||||
value = getValue("maxmessagesize");
|
||||
}
|
||||
|
||||
return new LineBreakStrategy(value);
|
||||
}
|
||||
|
||||
@ -980,18 +986,18 @@ public class SkinParam implements ISkinParam {
|
||||
public ConditionStyle getConditionStyle() {
|
||||
final String value = getValue("conditionStyle");
|
||||
final ConditionStyle p = ConditionStyle.fromString(value);
|
||||
if (p == null) {
|
||||
if (p == null)
|
||||
return ConditionStyle.INSIDE_HEXAGON;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
public ConditionEndStyle getConditionEndStyle() {
|
||||
final String value = getValue("conditionEndStyle");
|
||||
final ConditionEndStyle p = ConditionEndStyle.fromString(value);
|
||||
if (p == null) {
|
||||
if (p == null)
|
||||
return ConditionEndStyle.DIAMOND;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
@ -1016,16 +1022,16 @@ public class SkinParam implements ISkinParam {
|
||||
if (stereotype != null) {
|
||||
checkStereotype(stereotype);
|
||||
final String value2 = getValue("activityshape" + stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR));
|
||||
if (value2 != null) {
|
||||
if (value2 != null)
|
||||
value = value2;
|
||||
}
|
||||
|
||||
}
|
||||
if ("roundedbox".equalsIgnoreCase(value)) {
|
||||
if ("roundedbox".equalsIgnoreCase(value))
|
||||
return false;
|
||||
}
|
||||
if ("octagon".equalsIgnoreCase(value)) {
|
||||
|
||||
if ("octagon".equalsIgnoreCase(value))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1088,12 +1094,12 @@ public class SkinParam implements ISkinParam {
|
||||
|
||||
public int swimlaneWidth() {
|
||||
final String value = getValue("swimlanewidth");
|
||||
if ("same".equalsIgnoreCase(value)) {
|
||||
if ("same".equalsIgnoreCase(value))
|
||||
return SWIMLANE_WIDTH_SAME;
|
||||
}
|
||||
if (value != null && value.matches("\\d+")) {
|
||||
|
||||
if (value != null && value.matches("\\d+"))
|
||||
return Integer.parseInt(value);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1103,9 +1109,9 @@ public class SkinParam implements ISkinParam {
|
||||
|
||||
public HColor hoverPathColor() {
|
||||
final String value = getValue("pathhovercolor");
|
||||
if (value == null) {
|
||||
if (value == null)
|
||||
return null;
|
||||
}
|
||||
|
||||
return getIHtmlColorSet().getColorOrWhite(themeStyle, value, null);
|
||||
}
|
||||
|
||||
@ -1121,17 +1127,17 @@ public class SkinParam implements ISkinParam {
|
||||
|
||||
private double getAsDouble(final String name) {
|
||||
final String value = getValue(name);
|
||||
if (value != null && value.matches("\\d+(\\.\\d+)?")) {
|
||||
if (value != null && value.matches("\\d+(\\.\\d+)?"))
|
||||
return Double.parseDouble(value);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private int getAsInt(String key, int defaultValue) {
|
||||
final String value = getValue(key);
|
||||
if (value != null && value.matches("\\d+")) {
|
||||
if (value != null && value.matches("\\d+"))
|
||||
return Integer.parseInt(value);
|
||||
}
|
||||
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
@ -1173,9 +1179,9 @@ public class SkinParam implements ISkinParam {
|
||||
final double margin = getAsDouble("SequenceMessageMargin");
|
||||
final String borderColor = getValue("SequenceMessageBorderColor");
|
||||
final String backgroundColor = getValue("SequenceMessageBackGroundColor");
|
||||
if (padding == 0 && margin == 0 && borderColor == null && backgroundColor == null) {
|
||||
if (padding == 0 && margin == 0 && borderColor == null && backgroundColor == null)
|
||||
return Padder.NONE;
|
||||
}
|
||||
|
||||
final HColor border = borderColor == null ? null : getIHtmlColorSet().getColorOrWhite(themeStyle, borderColor);
|
||||
final HColor background = backgroundColor == null ? null
|
||||
: getIHtmlColorSet().getColorOrWhite(themeStyle, backgroundColor);
|
||||
@ -1186,12 +1192,12 @@ public class SkinParam implements ISkinParam {
|
||||
|
||||
public ActorStyle actorStyle() {
|
||||
final String value = getValue("actorstyle");
|
||||
if ("awesome".equalsIgnoreCase(value)) {
|
||||
if ("awesome".equalsIgnoreCase(value))
|
||||
return ActorStyle.AWESOME;
|
||||
}
|
||||
if ("hollow".equalsIgnoreCase(value)) {
|
||||
|
||||
if ("hollow".equalsIgnoreCase(value))
|
||||
return ActorStyle.HOLLOW;
|
||||
}
|
||||
|
||||
return ActorStyle.STICKMAN;
|
||||
}
|
||||
|
||||
@ -1201,31 +1207,29 @@ public class SkinParam implements ISkinParam {
|
||||
}
|
||||
|
||||
public String transformStringForSizeHack(String s) {
|
||||
for (Entry<String, String> ent : svgCharSizes.entrySet()) {
|
||||
for (Entry<String, String> ent : svgCharSizes.entrySet())
|
||||
s = s.replace(ent.getKey(), ent.getValue());
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
public LengthAdjust getlengthAdjust() {
|
||||
final String value = getValue("lengthAdjust");
|
||||
if ("spacingAndGlyphs".equalsIgnoreCase(value)) {
|
||||
if ("spacingAndGlyphs".equalsIgnoreCase(value))
|
||||
return LengthAdjust.SPACING_AND_GLYPHS;
|
||||
}
|
||||
if ("spacing".equalsIgnoreCase(value)) {
|
||||
|
||||
if ("spacing".equalsIgnoreCase(value))
|
||||
return LengthAdjust.SPACING;
|
||||
}
|
||||
if ("none".equalsIgnoreCase(value)) {
|
||||
|
||||
if ("none".equalsIgnoreCase(value))
|
||||
return LengthAdjust.NONE;
|
||||
}
|
||||
|
||||
return LengthAdjust.defaultValue();
|
||||
}
|
||||
|
||||
private ThemeStyle themeStyle = ThemeStyle.LIGHT;
|
||||
|
||||
public void assumeTransparent(ThemeStyle style) {
|
||||
this.themeStyle = style;
|
||||
}
|
||||
// public void assumeTransparent(ThemeStyle style) {
|
||||
// this.themeStyle = style;
|
||||
// }
|
||||
|
||||
public ThemeStyle getThemeStyle() {
|
||||
return themeStyle;
|
||||
|
@ -38,6 +38,7 @@ package net.sourceforge.plantuml;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.cucadiagram.Rankdir;
|
||||
import net.sourceforge.plantuml.cucadiagram.Stereotype;
|
||||
import net.sourceforge.plantuml.cucadiagram.dot.DotSplines;
|
||||
@ -455,10 +456,10 @@ public class SkinParamDelegator implements ISkinParam {
|
||||
return skinParam.getlengthAdjust();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void assumeTransparent(ThemeStyle style) {
|
||||
skinParam.assumeTransparent(style);
|
||||
}
|
||||
// @Override
|
||||
// public void assumeTransparent(ThemeStyle style) {
|
||||
// skinParam.assumeTransparent(style);
|
||||
// }
|
||||
|
||||
@Override
|
||||
public ThemeStyle getThemeStyle() {
|
||||
|
@ -54,6 +54,7 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import net.sourceforge.plantuml.api.ImageDataSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.error.PSystemError;
|
||||
import net.sourceforge.plantuml.preproc.Defines;
|
||||
@ -68,13 +69,13 @@ public abstract class SourceFileReaderAbstract implements ISourceFileReader {
|
||||
protected File outputFile;
|
||||
|
||||
protected final BlockUmlBuilder builder;
|
||||
protected /*final*/ FileFormatOption fileFormatOption;
|
||||
protected /* final */ FileFormatOption fileFormatOption;
|
||||
private boolean checkMetadata;
|
||||
private boolean noerror;
|
||||
|
||||
public SourceFileReaderAbstract(File file, FileFormatOption fileFormatOption, Defines defines, List<String> config, String charsetName)
|
||||
throws IOException {
|
||||
|
||||
public SourceFileReaderAbstract(File file, FileFormatOption fileFormatOption, Defines defines, List<String> config,
|
||||
String charsetName) throws IOException {
|
||||
|
||||
if (!file.exists()) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
@ -83,7 +84,7 @@ public abstract class SourceFileReaderAbstract implements ISourceFileReader {
|
||||
|
||||
this.file = file;
|
||||
this.fileFormatOption = fileFormatOption;
|
||||
this.builder = new BlockUmlBuilder(config, charset, defines, getReader(charset),
|
||||
this.builder = new BlockUmlBuilder(fileFormatOption.getStyle(), config, charset, defines, getReader(charset),
|
||||
SFile.fromFile(file.getAbsoluteFile().getParentFile()), FileWithSuffix.getFileName(file));
|
||||
}
|
||||
|
||||
@ -112,6 +113,7 @@ public abstract class SourceFileReaderAbstract implements ISourceFileReader {
|
||||
return builder.getIncludedFiles();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public final void setFileFormatOption(FileFormatOption fileFormatOption) {
|
||||
this.fileFormatOption = fileFormatOption;
|
||||
}
|
||||
|
@ -47,6 +47,7 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
@ -58,6 +59,7 @@ import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
public class SourceStringReader {
|
||||
|
||||
final private List<BlockUml> blocks;
|
||||
final private ThemeStyle style;
|
||||
|
||||
public SourceStringReader(String source) {
|
||||
this(Defines.createEmpty(), source, Collections.<String>emptyList());
|
||||
@ -87,23 +89,27 @@ public class SourceStringReader {
|
||||
this(defines, source, charset, config, FileSystem.getInstance().getCurrentDir());
|
||||
}
|
||||
|
||||
public SourceStringReader(Defines defines, String source, String charset, List<String> config, SFile newCurrentDir) {
|
||||
public SourceStringReader(Defines defines, String source, String charset, List<String> config,
|
||||
SFile newCurrentDir) {
|
||||
this(defines, source, charsetOrDefault(charset), config, newCurrentDir);
|
||||
}
|
||||
|
||||
|
||||
public SourceStringReader(Defines defines, String source, Charset charset, List<String> config,
|
||||
SFile newCurrentDir) {
|
||||
// // WARNING GLOBAL LOCK HERE
|
||||
// synchronized (SourceStringReader.class) {
|
||||
this(defines, source, charset, config, newCurrentDir, ThemeStyle.LIGHT_REGULAR);
|
||||
}
|
||||
|
||||
public SourceStringReader(Defines defines, String source, Charset charset, List<String> config, SFile newCurrentDir,
|
||||
ThemeStyle style) {
|
||||
this.style = style;
|
||||
try {
|
||||
final BlockUmlBuilder builder = new BlockUmlBuilder(config, charset, defines, new StringReader(source),
|
||||
newCurrentDir, "string");
|
||||
final BlockUmlBuilder builder = new BlockUmlBuilder(style, config, charset, defines,
|
||||
new StringReader(source), newCurrentDir, "string");
|
||||
this.blocks = builder.getBlockUmls();
|
||||
} catch (IOException e) {
|
||||
Log.error("error " + e);
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -128,11 +134,11 @@ public class SourceStringReader {
|
||||
|
||||
@Deprecated
|
||||
public String generateImage(OutputStream os, FileFormatOption fileFormatOption) throws IOException {
|
||||
return outputImage(os, fileFormatOption).getDescription();
|
||||
return outputImage(os, fileFormatOption.withStyle(style)).getDescription();
|
||||
}
|
||||
|
||||
public DiagramDescription outputImage(OutputStream os, FileFormatOption fileFormatOption) throws IOException {
|
||||
return outputImage(os, 0, fileFormatOption);
|
||||
return outputImage(os, 0, fileFormatOption.withStyle(style));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -146,11 +152,12 @@ public class SourceStringReader {
|
||||
|
||||
@Deprecated
|
||||
public String generateImage(OutputStream os, int numImage, FileFormatOption fileFormatOption) throws IOException {
|
||||
return outputImage(os, numImage, fileFormatOption).getDescription();
|
||||
return outputImage(os, numImage, fileFormatOption.withStyle(style)).getDescription();
|
||||
}
|
||||
|
||||
public DiagramDescription outputImage(OutputStream os, int numImage, FileFormatOption fileFormatOption)
|
||||
throws IOException {
|
||||
fileFormatOption = fileFormatOption.withStyle(style);
|
||||
if (blocks.size() == 0) {
|
||||
noStartumlFound(os, fileFormatOption);
|
||||
return null;
|
||||
@ -175,6 +182,7 @@ public class SourceStringReader {
|
||||
}
|
||||
|
||||
public DiagramDescription generateDiagramDescription(int numImage, FileFormatOption fileFormatOption) {
|
||||
fileFormatOption = fileFormatOption.withStyle(style);
|
||||
if (blocks.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
@ -201,14 +209,15 @@ public class SourceStringReader {
|
||||
}
|
||||
|
||||
public DiagramDescription generateDiagramDescription(FileFormatOption fileFormatOption) {
|
||||
return generateDiagramDescription(0, fileFormatOption);
|
||||
return generateDiagramDescription(0, fileFormatOption.withStyle(style));
|
||||
}
|
||||
|
||||
public DiagramDescription generateDiagramDescription(int numImage) {
|
||||
return generateDiagramDescription(numImage, new FileFormatOption(FileFormat.PNG));
|
||||
return generateDiagramDescription(numImage, new FileFormatOption(FileFormat.PNG).withStyle(style));
|
||||
}
|
||||
|
||||
public String getCMapData(int numImage, FileFormatOption fileFormatOption) throws IOException {
|
||||
fileFormatOption = fileFormatOption.withStyle(style);
|
||||
if (blocks.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
@ -229,11 +238,11 @@ public class SourceStringReader {
|
||||
}
|
||||
|
||||
public ImageData noStartumlFound(OutputStream os, FileFormatOption fileFormatOption) throws IOException {
|
||||
fileFormatOption = fileFormatOption.withStyle(style);
|
||||
final TextBlockBackcolored error = GraphicStrings.createForError(Arrays.asList("No @startuml/@enduml found"),
|
||||
fileFormatOption.isUseRedForError());
|
||||
|
||||
return plainImageBuilder(error, fileFormatOption)
|
||||
.write(os);
|
||||
return plainImageBuilder(error, fileFormatOption).write(os);
|
||||
}
|
||||
|
||||
public final List<BlockUml> getBlocks() {
|
||||
|
@ -35,6 +35,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.sprite.Sprite;
|
||||
|
||||
public interface SpriteContainer extends SvgCharSizeHack {
|
||||
|
@ -37,6 +37,7 @@ package net.sourceforge.plantuml;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.creole.Parser;
|
||||
import net.sourceforge.plantuml.sprite.Sprite;
|
||||
import net.sourceforge.plantuml.sprite.SpriteImage;
|
||||
@ -103,7 +104,7 @@ public class SpriteContainerEmpty implements SpriteContainer, ISkinSimple {
|
||||
}
|
||||
|
||||
public ThemeStyle getThemeStyle() {
|
||||
return ThemeStyle.LIGHT;
|
||||
return ThemeStyle.LIGHT_REGULAR;
|
||||
}
|
||||
|
||||
}
|
@ -41,6 +41,7 @@ import java.io.InputStream;
|
||||
import net.sourceforge.plantuml.anim.Animation;
|
||||
import net.sourceforge.plantuml.anim.AnimationDecoder;
|
||||
import net.sourceforge.plantuml.api.ApiStable;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -86,18 +87,18 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram,
|
||||
return pragma;
|
||||
}
|
||||
|
||||
public TitledDiagram(UmlSource source, UmlDiagramType type) {
|
||||
public TitledDiagram(ThemeStyle style, UmlSource source, UmlDiagramType type) {
|
||||
super(source);
|
||||
this.type = type;
|
||||
this.skinParam = SkinParam.create(type);
|
||||
this.skinParam = SkinParam.create(type, style);
|
||||
}
|
||||
|
||||
public final StyleBuilder getCurrentStyleBuilder() {
|
||||
return skinParam.getCurrentStyleBuilder();
|
||||
}
|
||||
|
||||
public TitledDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
this(source, type);
|
||||
public TitledDiagram(ThemeStyle style, UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
this(style, source, type);
|
||||
if (orig != null) {
|
||||
this.skinParam.copyAllFrom(orig);
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ import java.io.PrintWriter;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.api.ImageDataSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
@ -86,12 +87,12 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot
|
||||
|
||||
private int minwidth = Integer.MAX_VALUE;
|
||||
|
||||
public UmlDiagram(UmlSource source, UmlDiagramType type) {
|
||||
super(source, type);
|
||||
public UmlDiagram(ThemeStyle style, UmlSource source, UmlDiagramType type) {
|
||||
super(style, source, type);
|
||||
}
|
||||
|
||||
public UmlDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
super(source, type, orig);
|
||||
public UmlDiagram(ThemeStyle style, UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
super(style, source, type, orig);
|
||||
}
|
||||
|
||||
final public int getMinwidth() {
|
||||
@ -111,24 +112,23 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot
|
||||
}
|
||||
|
||||
public final DisplaySection getFooterOrHeaderTeoz(FontParam param) {
|
||||
if (param == FontParam.FOOTER) {
|
||||
if (param == FontParam.FOOTER)
|
||||
return getFooter();
|
||||
}
|
||||
if (param == FontParam.HEADER) {
|
||||
|
||||
if (param == FontParam.HEADER)
|
||||
return getHeader();
|
||||
}
|
||||
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
final protected ImageData exportDiagramNow(OutputStream os, int index, FileFormatOption fileFormatOption)
|
||||
throws IOException {
|
||||
|
||||
fileFormatOption = fileFormatOption.withTikzFontDistortion(getSkinParam().getTikzFontDistortion());
|
||||
|
||||
if (fileFormatOption.getFileFormat() == FileFormat.PDF) {
|
||||
if (fileFormatOption.getFileFormat() == FileFormat.PDF)
|
||||
return exportDiagramInternalPdf(os, index);
|
||||
}
|
||||
|
||||
try {
|
||||
final ImageData imageData = exportDiagramInternal(os, index, fileFormatOption);
|
||||
@ -141,7 +141,7 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot
|
||||
e.printStackTrace();
|
||||
exportDiagramError(os, e.getCause(), fileFormatOption, e.getGraphvizVersion());
|
||||
} catch (Throwable e) {
|
||||
//e.printStackTrace();
|
||||
// e.printStackTrace();
|
||||
exportDiagramError(os, e, fileFormatOption, null);
|
||||
}
|
||||
return ImageDataSimple.error();
|
||||
@ -172,27 +172,24 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot
|
||||
Log.error("Issue in flashcode generation " + e);
|
||||
// e.printStackTrace();
|
||||
}
|
||||
if (im2 != null) {
|
||||
if (im2 != null)
|
||||
GraphvizCrash.addDecodeHint(strings);
|
||||
}
|
||||
|
||||
}
|
||||
final BufferedImage im = im2;
|
||||
final TextBlockBackcolored graphicStrings = GraphicStrings.createBlackOnWhite(strings, IconLoader.getRandom(),
|
||||
GraphicPosition.BACKGROUND_CORNER_TOP_RIGHT);
|
||||
|
||||
final UDrawable drawable = (im == null) ? graphicStrings : new UDrawable() {
|
||||
public void drawU(UGraphic ug) {
|
||||
graphicStrings.drawU(ug);
|
||||
final double height = graphicStrings.calculateDimension(ug.getStringBounder()).getHeight();
|
||||
ug = ug.apply(UTranslate.dy(height));
|
||||
ug.draw(new UImage(new PixelImage(im, AffineTransformType.TYPE_NEAREST_NEIGHBOR)).scale(3));
|
||||
}
|
||||
};
|
||||
public void drawU(UGraphic ug) {
|
||||
graphicStrings.drawU(ug);
|
||||
final double height = graphicStrings.calculateDimension(ug.getStringBounder()).getHeight();
|
||||
ug = ug.apply(UTranslate.dy(height));
|
||||
ug.draw(new UImage(new PixelImage(im, AffineTransformType.TYPE_NEAREST_NEIGHBOR)).scale(3));
|
||||
}
|
||||
};
|
||||
|
||||
plainImageBuilder(drawable, fileFormat)
|
||||
.metadata(metadata)
|
||||
.seed(seed)
|
||||
.write(os);
|
||||
plainImageBuilder(drawable, fileFormat).metadata(metadata).seed(seed).write(os);
|
||||
}
|
||||
|
||||
private static void exportDiagramErrorText(OutputStream os, Throwable exception, List<String> strings) {
|
||||
@ -209,18 +206,18 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot
|
||||
|
||||
public String getFlashData() {
|
||||
final UmlSource source = getSource();
|
||||
if (source == null) {
|
||||
if (source == null)
|
||||
return "";
|
||||
}
|
||||
|
||||
return source.getPlainString();
|
||||
}
|
||||
|
||||
static private List<String> getFailureText1(Throwable exception, String graphvizVersion, String textDiagram) {
|
||||
final List<String> strings = GraphvizCrash.anErrorHasOccured(exception, textDiagram);
|
||||
strings.add("PlantUML (" + Version.versionString() + ") cannot parse result from dot/GraphViz.");
|
||||
if (exception instanceof EmptySvgException) {
|
||||
if (exception instanceof EmptySvgException)
|
||||
strings.add("Because dot/GraphViz returns an empty string.");
|
||||
}
|
||||
|
||||
GraphvizCrash.checkOldVersionWarning(strings);
|
||||
if (graphvizVersion != null) {
|
||||
strings.add(" ");
|
||||
@ -289,9 +286,9 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot
|
||||
final String name = changeName(suggestedFile.getFile(index).getAbsolutePath());
|
||||
final SFile cmapFile = new SFile(name);
|
||||
try (PrintWriter pw = cmapFile.createPrintWriter()) {
|
||||
if (PSystemUtils.canFileBeWritten(cmapFile) == false) {
|
||||
if (PSystemUtils.canFileBeWritten(cmapFile) == false)
|
||||
return;
|
||||
}
|
||||
|
||||
pw.print(cmapdata.getCMapData(cmapFile.getName().substring(0, cmapFile.getName().length() - 6)));
|
||||
}
|
||||
}
|
||||
@ -302,24 +299,24 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot
|
||||
|
||||
@Override
|
||||
public String getWarningOrError() {
|
||||
if (lastInfo == null) {
|
||||
if (lastInfo == null)
|
||||
return null;
|
||||
}
|
||||
|
||||
final double actualWidth = lastInfo.getWidth();
|
||||
if (actualWidth == 0) {
|
||||
if (actualWidth == 0)
|
||||
return null;
|
||||
}
|
||||
|
||||
final String value = getSkinParam().getValue("widthwarning");
|
||||
if (value == null) {
|
||||
if (value == null)
|
||||
return null;
|
||||
}
|
||||
if (value.matches("\\d+") == false) {
|
||||
|
||||
if (value.matches("\\d+") == false)
|
||||
return null;
|
||||
}
|
||||
|
||||
final int widthwarning = Integer.parseInt(value);
|
||||
if (actualWidth > widthwarning) {
|
||||
if (actualWidth > widthwarning)
|
||||
return "The image is " + ((int) actualWidth) + " pixel width. (Warning limit is " + widthwarning + ")";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -40,11 +40,12 @@ public class UseStyle {
|
||||
private static final ThreadLocal<Boolean> useBeta = new ThreadLocal<>();
|
||||
|
||||
static public boolean useBetaStyle() {
|
||||
final Boolean result = useBeta.get();
|
||||
if (result == null) {
|
||||
return false;
|
||||
}
|
||||
return result;
|
||||
// final Boolean result = useBeta.get();
|
||||
// if (result == null) {
|
||||
// return false;
|
||||
// }
|
||||
// return result;
|
||||
return true;
|
||||
}
|
||||
|
||||
static public void setBetaStyle(boolean betastyle) {
|
||||
|
@ -41,6 +41,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import ext.plantuml.com.ctreber.acearth.plugins.markers.Marker;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemBasicFactory;
|
||||
import net.sourceforge.plantuml.command.regex.Matcher2;
|
||||
import net.sourceforge.plantuml.command.regex.MyPattern;
|
||||
@ -55,7 +56,7 @@ public class PSystemXearthFactory extends PSystemBasicFactory<PSystemXearth> {
|
||||
private int height;
|
||||
|
||||
@Override
|
||||
public PSystemXearth initDiagram(UmlSource source, String startLine) {
|
||||
public PSystemXearth initDiagram(ThemeStyle style, UmlSource source, String startLine) {
|
||||
this.width = 512;
|
||||
this.height = 512;
|
||||
this.config.clear();
|
||||
@ -74,18 +75,18 @@ public class PSystemXearthFactory extends PSystemBasicFactory<PSystemXearth> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemXearth executeLine(UmlSource source, PSystemXearth system, String line) {
|
||||
public PSystemXearth executeLine(ThemeStyle style, UmlSource source, PSystemXearth system, String line) {
|
||||
if (system == null && line.startsWith("xearth")) {
|
||||
extractDimension(line);
|
||||
system = new PSystemXearth(source, width, height, config, markers);
|
||||
return system;
|
||||
}
|
||||
if (system == null) {
|
||||
if (system == null)
|
||||
return null;
|
||||
}
|
||||
if (line.startsWith("#") || line.startsWith("'")) {
|
||||
|
||||
if (line.startsWith("#") || line.startsWith("'"))
|
||||
return system;
|
||||
}
|
||||
|
||||
final Pattern2 p = MyPattern.cmpile("(\\w+)[%s]*=[%s]*(.*)");
|
||||
final Matcher2 m = p.matcher(line);
|
||||
if (m.find()) {
|
||||
|
@ -42,6 +42,7 @@ import java.util.Objects;
|
||||
import net.sourceforge.plantuml.Direction;
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.cucadiagram.Code;
|
||||
@ -62,8 +63,8 @@ public class ActivityDiagram extends CucaDiagram {
|
||||
private IEntity lastEntityBrancheConsulted;
|
||||
private ConditionalContext currentContext;
|
||||
|
||||
public ActivityDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
super(source, UmlDiagramType.ACTIVITY, skinParam);
|
||||
public ActivityDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
super(style, source, UmlDiagramType.ACTIVITY, skinParam);
|
||||
setNamespaceSeparator(null);
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,7 @@ import net.sourceforge.plantuml.activitydiagram.command.CommandIf;
|
||||
import net.sourceforge.plantuml.activitydiagram.command.CommandLinkActivity;
|
||||
import net.sourceforge.plantuml.activitydiagram.command.CommandLinkLongActivity;
|
||||
import net.sourceforge.plantuml.activitydiagram.command.CommandPartition;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.classdiagram.command.CommandHideShow2;
|
||||
import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.CommandFootboxIgnored;
|
||||
@ -59,8 +60,8 @@ import net.sourceforge.plantuml.core.UmlSource;
|
||||
public class ActivityDiagramFactory extends PSystemCommandFactory {
|
||||
|
||||
@Override
|
||||
public ActivityDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new ActivityDiagram(source, skinParam);
|
||||
public ActivityDiagram createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new ActivityDiagram(style, source, skinParam);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -46,6 +46,7 @@ import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.Url;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.BoxStyle;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlanes;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
@ -74,23 +75,22 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
|
||||
private final Swimlanes swinlanes = new Swimlanes(getSkinParam(), getPragma());
|
||||
|
||||
public ActivityDiagram3(UmlSource source, ISkinSimple skinParam) {
|
||||
super(source, UmlDiagramType.ACTIVITY, skinParam);
|
||||
public ActivityDiagram3(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
super(style, source, UmlDiagramType.ACTIVITY, skinParam);
|
||||
}
|
||||
|
||||
private void manageSwimlaneStrategy() {
|
||||
if (swimlaneStrategy == null) {
|
||||
if (swimlaneStrategy == null)
|
||||
swimlaneStrategy = SwimlaneStrategy.SWIMLANE_FORBIDDEN;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public CommandExecutionResult swimlane(String name, HColor color, Display label) {
|
||||
if (swimlaneStrategy == null) {
|
||||
if (swimlaneStrategy == null)
|
||||
swimlaneStrategy = SwimlaneStrategy.SWIMLANE_ALLOWED;
|
||||
}
|
||||
if (swimlaneStrategy == SwimlaneStrategy.SWIMLANE_FORBIDDEN) {
|
||||
|
||||
if (swimlaneStrategy == SwimlaneStrategy.SWIMLANE_FORBIDDEN)
|
||||
return CommandExecutionResult.error("This swimlane must be defined at the start of the diagram.");
|
||||
}
|
||||
|
||||
swinlanes.swimlane(name, color, label);
|
||||
return CommandExecutionResult.ok();
|
||||
@ -114,14 +114,14 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
final InstructionSimple ins = new InstructionSimple(activity, nextLinkRenderer(),
|
||||
swinlanes.getCurrentSwimlane(), style, url, colors, stereotype);
|
||||
final CommandExecutionResult added = current().add(ins);
|
||||
if (added.isOk() == false) {
|
||||
if (added.isOk() == false)
|
||||
return added;
|
||||
}
|
||||
|
||||
setNextLinkRendererInternal(LinkRendering.none());
|
||||
manageHasUrl(activity);
|
||||
if (url != null) {
|
||||
if (url != null)
|
||||
hasUrl = true;
|
||||
}
|
||||
|
||||
return CommandExecutionResult.ok();
|
||||
|
||||
}
|
||||
@ -157,34 +157,34 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
public void stop() {
|
||||
manageSwimlaneStrategy();
|
||||
final InstructionStop ins = new InstructionStop(swinlanes.getCurrentSwimlane(), nextLinkRenderer());
|
||||
if (manageSpecialStopEndAfterEndWhile(ins)) {
|
||||
if (manageSpecialStopEndAfterEndWhile(ins))
|
||||
return;
|
||||
}
|
||||
|
||||
current().add(ins);
|
||||
}
|
||||
|
||||
public void end() {
|
||||
manageSwimlaneStrategy();
|
||||
final InstructionEnd ins = new InstructionEnd(swinlanes.getCurrentSwimlane(), nextLinkRenderer());
|
||||
if (manageSpecialStopEndAfterEndWhile(ins)) {
|
||||
if (manageSpecialStopEndAfterEndWhile(ins))
|
||||
return;
|
||||
}
|
||||
|
||||
current().add(ins);
|
||||
}
|
||||
|
||||
private boolean manageSpecialStopEndAfterEndWhile(Instruction special) {
|
||||
if (current() instanceof InstructionList == false) {
|
||||
if (current() instanceof InstructionList == false)
|
||||
return false;
|
||||
}
|
||||
|
||||
final InstructionList current = (InstructionList) current();
|
||||
final Instruction last = current.getLast();
|
||||
if (last instanceof InstructionWhile == false) {
|
||||
if (last instanceof InstructionWhile == false)
|
||||
return false;
|
||||
}
|
||||
|
||||
final InstructionWhile instructionWhile = (InstructionWhile) last;
|
||||
if (instructionWhile.containsBreak()) {
|
||||
if (instructionWhile.containsBreak())
|
||||
return false;
|
||||
}
|
||||
|
||||
instructionWhile.setSpecial(special);
|
||||
return true;
|
||||
}
|
||||
@ -285,9 +285,9 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
public CommandExecutionResult switchCase(Display labelCase) {
|
||||
if (current() instanceof InstructionSwitch) {
|
||||
final boolean ok = ((InstructionSwitch) current()).switchCase(labelCase, nextLinkRenderer());
|
||||
if (ok == false) {
|
||||
if (ok == false)
|
||||
return CommandExecutionResult.error("You cannot put an elseIf here");
|
||||
}
|
||||
|
||||
setNextLinkRendererInternal(LinkRendering.none());
|
||||
return CommandExecutionResult.ok();
|
||||
|
||||
@ -317,9 +317,9 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
public CommandExecutionResult elseIf(LinkRendering inlabel, Display test, LinkRendering whenThen, HColor color) {
|
||||
if (current() instanceof InstructionIf) {
|
||||
final boolean ok = ((InstructionIf) current()).elseIf(inlabel, test, whenThen, nextLinkRenderer(), color);
|
||||
if (ok == false) {
|
||||
if (ok == false)
|
||||
return CommandExecutionResult.error("You cannot put an elseIf here");
|
||||
}
|
||||
|
||||
setNextLinkRendererInternal(LinkRendering.none());
|
||||
return CommandExecutionResult.ok();
|
||||
}
|
||||
@ -329,9 +329,9 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
public CommandExecutionResult else2(LinkRendering whenElse) {
|
||||
if (current() instanceof InstructionIf) {
|
||||
final boolean result = ((InstructionIf) current()).swithToElse2(whenElse, nextLinkRenderer());
|
||||
if (result == false) {
|
||||
if (result == false)
|
||||
return CommandExecutionResult.error("Cannot find if");
|
||||
}
|
||||
|
||||
setNextLinkRendererInternal(LinkRendering.none());
|
||||
return CommandExecutionResult.ok();
|
||||
}
|
||||
@ -411,9 +411,9 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
}
|
||||
|
||||
final public CommandExecutionResult kill() {
|
||||
if (current().kill() == false) {
|
||||
if (current().kill() == false)
|
||||
return CommandExecutionResult.error("kill cannot be used here");
|
||||
}
|
||||
|
||||
return CommandExecutionResult.ok();
|
||||
}
|
||||
|
||||
@ -444,11 +444,11 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
// System.err.println("setNextLink=" + linkRenderer);
|
||||
if (current() instanceof InstructionCollection) {
|
||||
final Instruction last = ((InstructionCollection) current()).getLast();
|
||||
if (last instanceof InstructionWhile) {
|
||||
if (last instanceof InstructionWhile)
|
||||
((InstructionWhile) last).outColor(linkRenderer.getRainbow());
|
||||
} else if (last instanceof InstructionIf) {
|
||||
else if (last instanceof InstructionIf)
|
||||
((InstructionIf) last).outColor(linkRenderer);
|
||||
}
|
||||
|
||||
}
|
||||
this.setNextLinkRendererInternal(linkRenderer);
|
||||
}
|
||||
@ -468,18 +468,18 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
}
|
||||
|
||||
public void setColorNextArrow(Rainbow color) {
|
||||
if (color == null) {
|
||||
if (color == null)
|
||||
return;
|
||||
}
|
||||
|
||||
final LinkRendering link = new LinkRendering(color);
|
||||
setNextLink(link);
|
||||
}
|
||||
|
||||
public CommandExecutionResult addNote(Display note, NotePosition position, NoteType type, Colors colors) {
|
||||
final boolean ok = current().addNote(note, position, type, colors, swinlanes.getCurrentSwimlane());
|
||||
if (ok == false) {
|
||||
if (ok == false)
|
||||
return CommandExecutionResult.error("Cannot add note here");
|
||||
}
|
||||
|
||||
manageHasUrl(note);
|
||||
return CommandExecutionResult.ok();
|
||||
}
|
||||
@ -487,9 +487,9 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
private boolean hasUrl = false;
|
||||
|
||||
private void manageHasUrl(Display display) {
|
||||
if (display.hasUrl()) {
|
||||
if (display.hasUrl())
|
||||
hasUrl = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -84,11 +84,12 @@ import net.sourceforge.plantuml.activitydiagram3.command.CommandSwimlane2;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandSwitch;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandWhile3;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandWhileEnd3;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.CommandDecoratorMultine;
|
||||
import net.sourceforge.plantuml.command.CommandFootboxIgnored;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.command.CommonCommands;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
|
||||
public class ActivityDiagramFactory3 extends PSystemCommandFactory {
|
||||
@ -161,8 +162,8 @@ public class ActivityDiagramFactory3 extends PSystemCommandFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityDiagram3 createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new ActivityDiagram3(source, skinParam);
|
||||
public ActivityDiagram3 createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new ActivityDiagram3(style, source, skinParam);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ public class Hexagon {
|
||||
};
|
||||
}
|
||||
|
||||
public static UPolygon asPolygonSquare(boolean shadowing, double width, double height) {
|
||||
public static UPolygon asPolygonSquare(double shadowing, double width, double height) {
|
||||
final UPolygon diams = new UPolygon();
|
||||
|
||||
diams.addPoint(width / 2, 0);
|
||||
@ -113,9 +113,7 @@ public class Hexagon {
|
||||
diams.addPoint(width / 2, height);
|
||||
diams.addPoint(0, height / 2);
|
||||
|
||||
if (shadowing) {
|
||||
diams.setDeltaShadow(3);
|
||||
}
|
||||
diams.setDeltaShadow(shadowing);
|
||||
|
||||
return diams;
|
||||
}
|
||||
|
@ -163,10 +163,20 @@ public class FtileFactoryDelegatorSwitch extends FtileFactoryDelegator {
|
||||
}
|
||||
|
||||
private Ftile getDiamond2(Swimlane swimlane, Branch branch0) {
|
||||
final HColor borderColor = getRose().getHtmlColor(skinParam(), ColorParam.activityDiamondBorder);
|
||||
final HColor backColor = branch0.getColor() == null
|
||||
? getRose().getHtmlColor(skinParam(), ColorParam.activityDiamondBackground)
|
||||
: branch0.getColor();
|
||||
final HColor borderColor;
|
||||
final HColor backColor;
|
||||
if (UseStyle.useBetaStyle()) {
|
||||
final Style style = getDefaultStyleDefinitionDiamond().getMergedStyle(skinParam().getCurrentStyleBuilder());
|
||||
borderColor = style.value(PName.LineColor).asColor(skinParam().getThemeStyle(),
|
||||
skinParam().getIHtmlColorSet());
|
||||
backColor = branch0.getColor() == null ? style.value(PName.BackGroundColor)
|
||||
.asColor(skinParam().getThemeStyle(), skinParam().getIHtmlColorSet()) : branch0.getColor();
|
||||
} else {
|
||||
borderColor = getRose().getHtmlColor(skinParam(), ColorParam.activityDiamondBorder);
|
||||
backColor = branch0.getColor() == null
|
||||
? getRose().getHtmlColor(skinParam(), ColorParam.activityDiamondBackground)
|
||||
: branch0.getColor();
|
||||
}
|
||||
|
||||
return new FtileDiamondInside(TextBlockUtils.empty(0, 0), branch0.skinParam(), backColor, borderColor,
|
||||
swimlane);
|
||||
|
@ -96,9 +96,7 @@ public class FtileGroup extends AbstractFtile {
|
||||
super(inner.skinParam());
|
||||
this.roundCorner = roundCorner;
|
||||
this.type = type;
|
||||
this.backColor = backColor == null ? HColorUtils.WHITE : backColor;
|
||||
this.inner = FtileUtils.addHorizontalMargin(inner, 10);
|
||||
this.borderColor = borderColor == null ? HColorUtils.BLACK : borderColor;
|
||||
|
||||
final FontConfiguration fc;
|
||||
final Style style;
|
||||
@ -106,7 +104,15 @@ public class FtileGroup extends AbstractFtile {
|
||||
style = getDefaultStyleDefinitionPartition().getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
fc = style.getFontConfiguration(skinParam.getThemeStyle(), getIHtmlColorSet());
|
||||
this.shadowing = style.value(PName.Shadowing).asDouble();
|
||||
this.backColor = backColor == null
|
||||
? style.value(PName.BackGroundColor).asColor(skinParam.getThemeStyle(), getIHtmlColorSet())
|
||||
: backColor;
|
||||
this.borderColor = borderColor == null
|
||||
? style.value(PName.LineColor).asColor(skinParam.getThemeStyle(), getIHtmlColorSet())
|
||||
: borderColor;
|
||||
} else {
|
||||
this.backColor = backColor == null ? HColorUtils.WHITE : backColor;
|
||||
this.borderColor = borderColor == null ? HColorUtils.BLACK : borderColor;
|
||||
style = null;
|
||||
final UFont font = skinParam.getFont(null, false, FontParam.PARTITION);
|
||||
final HColor fontColor = skinParam.getFontHtmlColor(null, FontParam.PARTITION);
|
||||
@ -114,16 +120,15 @@ public class FtileGroup extends AbstractFtile {
|
||||
skinParam.useUnderlineForHyperlink(), skinParam.getTabSize());
|
||||
this.shadowing = skinParam().shadowing(null) ? 3 : 0;
|
||||
}
|
||||
if (title == null) {
|
||||
if (title == null)
|
||||
this.name = TextBlockUtils.empty(0, 0);
|
||||
} else {
|
||||
else
|
||||
this.name = title.create(fc, HorizontalAlignment.LEFT, skinParam);
|
||||
}
|
||||
if (Display.isNull(displayNote)) {
|
||||
|
||||
if (Display.isNull(displayNote))
|
||||
this.headerNote = TextBlockUtils.empty(0, 0);
|
||||
} else {
|
||||
else
|
||||
this.headerNote = new FloatingNote(displayNote, skinParam, style);
|
||||
}
|
||||
|
||||
final UStroke thickness = skinParam.getThickness(LineParam.partitionBorder, null);
|
||||
this.stroke = thickness == null ? new UStroke(2) : thickness;
|
||||
@ -183,9 +188,9 @@ public class FtileGroup extends AbstractFtile {
|
||||
private FtileGeometry cachedInnerDimension;
|
||||
|
||||
private FtileGeometry getInnerDimension(StringBounder stringBounder) {
|
||||
if (cachedInnerDimension == null) {
|
||||
if (cachedInnerDimension == null)
|
||||
cachedInnerDimension = getInnerDimensionSlow(stringBounder);
|
||||
}
|
||||
|
||||
return cachedInnerDimension;
|
||||
|
||||
}
|
||||
@ -208,10 +213,10 @@ public class FtileGroup extends AbstractFtile {
|
||||
final double height = orig.getHeight() + diffHeightTitle(stringBounder) + diffYY2
|
||||
+ headerNoteHeight(stringBounder);
|
||||
final double titleAndHeaderNoteHeight = diffHeightTitle(stringBounder) + headerNoteHeight(stringBounder);
|
||||
if (orig.hasPointOut()) {
|
||||
if (orig.hasPointOut())
|
||||
return new FtileGeometry(width, height, orig.getLeft() + suppWidth / 2,
|
||||
orig.getInY() + titleAndHeaderNoteHeight, orig.getOutY() + titleAndHeaderNoteHeight);
|
||||
}
|
||||
|
||||
return new FtileGeometry(width, height, orig.getLeft() + suppWidth / 2,
|
||||
orig.getInY() + titleAndHeaderNoteHeight);
|
||||
}
|
||||
@ -224,8 +229,6 @@ public class FtileGroup extends AbstractFtile {
|
||||
final StringBounder stringBounder = ug.getStringBounder();
|
||||
final Dimension2D dimTotal = calculateDimension(stringBounder);
|
||||
|
||||
// final double roundCorner =
|
||||
// type.getSkinParameter().getRoundCorner(skinParam(), null);
|
||||
final SymbolContext symbolContext = new SymbolContext(backColor, borderColor).withShadow(shadowing)
|
||||
.withStroke(stroke).withCorner(roundCorner, 0);
|
||||
|
||||
|
@ -82,9 +82,9 @@ class FtileSwitch extends AbstractFtile {
|
||||
|
||||
public Set<Swimlane> getSwimlanes() {
|
||||
final Set<Swimlane> result = new HashSet<>();
|
||||
if (getSwimlaneIn() != null) {
|
||||
if (getSwimlaneIn() != null)
|
||||
result.add(getSwimlaneIn());
|
||||
}
|
||||
|
||||
return Collections.unmodifiableSet(result);
|
||||
}
|
||||
|
||||
@ -102,9 +102,8 @@ class FtileSwitch extends AbstractFtile {
|
||||
Objects.requireNonNull(afterEndwhile);
|
||||
final List<Ftile> tiles = new ArrayList<>();
|
||||
|
||||
for (Branch branch : thens) {
|
||||
for (Branch branch : thens)
|
||||
tiles.add(new FtileMinWidthCentered(branch.getFtile(), 30));
|
||||
}
|
||||
|
||||
List<Double> inlabelSizes = new ArrayList<>();
|
||||
for (Branch branch : thens) {
|
||||
@ -115,8 +114,8 @@ class FtileSwitch extends AbstractFtile {
|
||||
ftileFactory.skinParam());
|
||||
final HColor diamondColor = branch.getColor() == null ? backColor : branch.getColor();
|
||||
|
||||
FtileDiamondInside2 diamond = new FtileDiamondInside2(tbTest, branch.skinParam(), diamondColor,
|
||||
borderColor, swimlane);
|
||||
FtileDiamondInside2 diamond = new FtileDiamondInside2(tbTest, branch.skinParam(), diamondColor, borderColor,
|
||||
swimlane);
|
||||
TextBlock tbInlabel = null;
|
||||
if (Display.isNull(branch.getInlabel())) {
|
||||
inlabelSizes.add(0.0);
|
||||
@ -140,9 +139,9 @@ class FtileSwitch extends AbstractFtile {
|
||||
|
||||
@Override
|
||||
public UTranslate getTranslateFor(Ftile child, StringBounder stringBounder) {
|
||||
if (tiles.contains(child)) {
|
||||
if (tiles.contains(child))
|
||||
return getTranslate1(child, stringBounder);
|
||||
}
|
||||
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@ -150,9 +149,9 @@ class FtileSwitch extends AbstractFtile {
|
||||
double x1 = 0;
|
||||
for (Ftile candidate : tiles) {
|
||||
final FtileGeometry dim1 = candidate.calculateDimension(stringBounder);
|
||||
if (candidate == tile) {
|
||||
if (candidate == tile)
|
||||
return new UTranslate(x1, 25);
|
||||
}
|
||||
|
||||
x1 += dim1.getWidth() + xSeparation;
|
||||
}
|
||||
throw new IllegalArgumentException();
|
||||
@ -160,16 +159,16 @@ class FtileSwitch extends AbstractFtile {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
final StringBounder stringBounder = ug.getStringBounder();
|
||||
for (Ftile tile : tiles) {
|
||||
for (Ftile tile : tiles)
|
||||
ug.apply(getTranslate1(tile, stringBounder)).draw(tile);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private FtileGeometry calculateDimensionInternal(StringBounder stringBounder) {
|
||||
Dimension2D result = new Dimension2DDouble(0, 0);
|
||||
for (Ftile couple : tiles) {
|
||||
for (Ftile couple : tiles)
|
||||
result = Dimension2DDouble.mergeLR(result, couple.calculateDimension(stringBounder));
|
||||
}
|
||||
|
||||
result = Dimension2DDouble.delta(result, xSeparation * (tiles.size() - 1), 100);
|
||||
|
||||
return new FtileGeometry(result, result.getWidth() / 2, 0);
|
||||
@ -180,11 +179,10 @@ class FtileSwitch extends AbstractFtile {
|
||||
final Dimension2D dimTotal = calculateDimensionInternal(stringBounder);
|
||||
|
||||
final List<Ftile> all = new ArrayList<>(tiles);
|
||||
for (Ftile tmp : all) {
|
||||
if (tmp.calculateDimension(stringBounder).hasPointOut()) {
|
||||
for (Ftile tmp : all)
|
||||
if (tmp.calculateDimension(stringBounder).hasPointOut())
|
||||
return new FtileGeometry(dimTotal, dimTotal.getWidth() / 2, 0, dimTotal.getHeight());
|
||||
}
|
||||
}
|
||||
|
||||
return new FtileGeometry(dimTotal, dimTotal.getWidth() / 2, 0);
|
||||
|
||||
}
|
||||
|
@ -94,10 +94,6 @@ public class VCompactFactory implements FtileFactory {
|
||||
this.stringBounder = stringBounder;
|
||||
}
|
||||
|
||||
private StyleSignature getSignatureCircle() {
|
||||
return StyleSignature.of(SName.root, SName.element, SName.activityDiagram, SName.circle);
|
||||
}
|
||||
|
||||
private StyleSignature getSignatureCircleEnd() {
|
||||
return StyleSignature.of(SName.root, SName.element, SName.activityDiagram, SName.circle, SName.end);
|
||||
}
|
||||
@ -106,11 +102,15 @@ public class VCompactFactory implements FtileFactory {
|
||||
return StyleSignature.of(SName.root, SName.element, SName.activityDiagram, SName.circle, SName.stop);
|
||||
}
|
||||
|
||||
private StyleSignature getSignatureCircleStart() {
|
||||
return StyleSignature.of(SName.root, SName.element, SName.activityDiagram, SName.circle, SName.start);
|
||||
}
|
||||
|
||||
public Ftile start(Swimlane swimlane) {
|
||||
final HColor color;
|
||||
Style style = null;
|
||||
if (UseStyle.useBetaStyle()) {
|
||||
style = getSignatureCircle().getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
style = getSignatureCircleStart().getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
color = style.value(PName.LineColor).asColor(skinParam.getThemeStyle(), skinParam.getIHtmlColorSet());
|
||||
} else {
|
||||
color = rose.getHtmlColor(skinParam, ColorParam.activityStart);
|
||||
|
@ -70,12 +70,12 @@ public class FtileSwitchNude extends FtileDimensionMemoize {
|
||||
|
||||
public Set<Swimlane> getSwimlanes() {
|
||||
final Set<Swimlane> result = new HashSet<>();
|
||||
if (getSwimlaneIn() != null) {
|
||||
if (getSwimlaneIn() != null)
|
||||
result.add(getSwimlaneIn());
|
||||
}
|
||||
for (Ftile tile : tiles) {
|
||||
|
||||
for (Ftile tile : tiles)
|
||||
result.addAll(tile.getSwimlanes());
|
||||
}
|
||||
|
||||
return Collections.unmodifiableSet(result);
|
||||
}
|
||||
|
||||
@ -89,9 +89,9 @@ public class FtileSwitchNude extends FtileDimensionMemoize {
|
||||
|
||||
@Override
|
||||
public UTranslate getTranslateFor(Ftile child, StringBounder stringBounder) {
|
||||
if (tiles.contains(child)) {
|
||||
if (tiles.contains(child))
|
||||
return getTranslateNude(child, stringBounder);
|
||||
}
|
||||
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@ -99,9 +99,9 @@ public class FtileSwitchNude extends FtileDimensionMemoize {
|
||||
double x1 = 0;
|
||||
for (Ftile candidate : tiles) {
|
||||
final FtileGeometry dim1 = candidate.calculateDimension(stringBounder);
|
||||
if (candidate == tile) {
|
||||
if (candidate == tile)
|
||||
return UTranslate.dx(x1);
|
||||
}
|
||||
|
||||
x1 += dim1.getWidth() + xSeparation;
|
||||
}
|
||||
throw new IllegalArgumentException();
|
||||
@ -109,27 +109,27 @@ public class FtileSwitchNude extends FtileDimensionMemoize {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
final StringBounder stringBounder = ug.getStringBounder();
|
||||
for (Ftile tile : tiles) {
|
||||
for (Ftile tile : tiles)
|
||||
ug.apply(getTranslateNude(tile, stringBounder)).draw(tile);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
final protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
|
||||
final FtileGeometry dimTotal = calculateDimensionInternal(stringBounder);
|
||||
for (Ftile tile : tiles)
|
||||
if (tile.calculateDimension(stringBounder).hasPointOut()) {
|
||||
if (tile.calculateDimension(stringBounder).hasPointOut())
|
||||
return dimTotal;
|
||||
}
|
||||
|
||||
return dimTotal.withoutPointOut();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FtileGeometry calculateDimensionInternalSlow(StringBounder stringBounder) {
|
||||
Dimension2D result = new Dimension2DDouble(0, 0);
|
||||
for (Ftile couple : tiles) {
|
||||
for (Ftile couple : tiles)
|
||||
result = Dimension2DDouble.mergeLR(result, couple.calculateDimension(stringBounder));
|
||||
}
|
||||
|
||||
result = Dimension2DDouble.delta(result, xSeparation * (tiles.size() - 1), 100);
|
||||
|
||||
return new FtileGeometry(result, result.getWidth() / 2, 0);
|
||||
|
@ -85,18 +85,18 @@ public class FtileSwitchWithDiamonds extends FtileSwitchNude {
|
||||
- tiles.get(0).calculateDimension(stringBounder).getRight()
|
||||
- tiles.get(tiles.size() - 1).calculateDimension(stringBounder).getLeft();
|
||||
w9 = getW9(stringBounder);
|
||||
if (w13 > w9) {
|
||||
if (w13 > w9)
|
||||
mode = Mode.BIG_DIAMOND;
|
||||
} else {
|
||||
else
|
||||
mode = Mode.SMALL_DIAMOND;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private double getW9(StringBounder stringBounder) {
|
||||
double result = 0;
|
||||
for (int i = 1; i < tiles.size() - 1; i++) {
|
||||
for (int i = 1; i < tiles.size() - 1; i++)
|
||||
result += tiles.get(i).calculateDimension(stringBounder).getWidth();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -144,17 +144,15 @@ public class FtileSwitchWithDiamonds extends FtileSwitchNude {
|
||||
final StringBounder stringBounder = ug.getStringBounder();
|
||||
|
||||
ug.apply(getTranslateDiamond1(stringBounder)).draw(diamond1);
|
||||
if (mode == Mode.BIG_DIAMOND) {
|
||||
for (Ftile tile : tiles) {
|
||||
if (mode == Mode.BIG_DIAMOND)
|
||||
for (Ftile tile : tiles)
|
||||
tile.drawU(ug.apply(getTranslateOf(tile, stringBounder)));
|
||||
}
|
||||
} else {
|
||||
else
|
||||
super.drawU(ug.apply(getTranslateMain(stringBounder)));
|
||||
}
|
||||
|
||||
if (calculateDimension(stringBounder).hasPointOut()) {
|
||||
if (calculateDimension(stringBounder).hasPointOut())
|
||||
ug.apply(getTranslateDiamond2(stringBounder)).draw(diamond2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
final protected UTranslate getTranslateOf(Ftile tile, StringBounder stringBounder) {
|
||||
@ -163,11 +161,10 @@ public class FtileSwitchWithDiamonds extends FtileSwitchNude {
|
||||
double dx = 0;
|
||||
final double suppx = (w13 - w9) / (tiles.size() - 1);
|
||||
for (int i = 0; i < tiles.size() - 1; i++) {
|
||||
if (tile == tiles.get(i)) {
|
||||
if (tile == tiles.get(i))
|
||||
return main.compose(UTranslate.dx(dx));
|
||||
}
|
||||
dx += tiles.get(i).calculateDimension(stringBounder).getWidth() + suppx;
|
||||
|
||||
dx += tiles.get(i).calculateDimension(stringBounder).getWidth() + suppx;
|
||||
}
|
||||
if (tile == tiles.get(tiles.size() - 1)) {
|
||||
final double dx9 = tiles.get(0).calculateDimension(stringBounder).getWidth() + w13 + SUPP15 + SUPP15;
|
||||
|
@ -41,7 +41,6 @@ import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.Direction;
|
||||
import net.sourceforge.plantuml.activitydiagram3.Branch;
|
||||
import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractConnection;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Arrows;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Connection;
|
||||
@ -50,7 +49,6 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.FtileGeometry;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileUtils;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Snake;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||
import net.sourceforge.plantuml.cucadiagram.Display;
|
||||
import net.sourceforge.plantuml.graphic.Rainbow;
|
||||
import net.sourceforge.plantuml.graphic.StringBounder;
|
||||
import net.sourceforge.plantuml.graphic.TextBlock;
|
||||
@ -100,13 +98,13 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds {
|
||||
private Point2D getP1(StringBounder stringBounder) {
|
||||
final FtileGeometry dimDiamond1 = diamond1.calculateDimension(stringBounder);
|
||||
final Point2D pt;
|
||||
if (getFtile2() == tiles.get(0)) {
|
||||
if (getFtile2() == tiles.get(0))
|
||||
pt = dimDiamond1.getPointD();
|
||||
} else if (getFtile2() == tiles.get(tiles.size() - 1)) {
|
||||
else if (getFtile2() == tiles.get(tiles.size() - 1))
|
||||
pt = dimDiamond1.getPointB();
|
||||
} else {
|
||||
else
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
return getTranslateDiamond1(stringBounder).getTranslated(pt);
|
||||
}
|
||||
|
||||
@ -129,9 +127,9 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds {
|
||||
public void drawU(UGraphic ug) {
|
||||
final StringBounder stringBounder = ug.getStringBounder();
|
||||
final FtileGeometry geo = getFtile1().calculateDimension(stringBounder);
|
||||
if (geo.hasPointOut() == false) {
|
||||
if (geo.hasPointOut() == false)
|
||||
return;
|
||||
}
|
||||
|
||||
final Point2D p1 = getP1(stringBounder);
|
||||
final double x1 = p1.getX();
|
||||
final double y1 = p1.getY();
|
||||
@ -320,18 +318,18 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds {
|
||||
branches.get(lastOutgoingArrow).getTextBlockSpecial()));
|
||||
for (int i = firstOutgoingArrow + 1; i < lastOutgoingArrow; i++) {
|
||||
final Ftile tile = tiles.get(i);
|
||||
if (tile.calculateDimension(stringBounder).hasPointOut()) {
|
||||
if (tile.calculateDimension(stringBounder).hasPointOut())
|
||||
conns.add(new ConnectionVerticalBottom(tile, branches.get(i).getTextBlockSpecial()));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private int getFirstOutgoingArrow(StringBounder stringBounder) {
|
||||
for (int i = 0; i < tiles.size() - 1; i++) {
|
||||
final Ftile tile = tiles.get(i);
|
||||
if (tile.calculateDimension(stringBounder).hasPointOut()) {
|
||||
if (tile.calculateDimension(stringBounder).hasPointOut())
|
||||
return i;
|
||||
}
|
||||
|
||||
}
|
||||
return tiles.size();
|
||||
}
|
||||
@ -339,9 +337,9 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds {
|
||||
private int getLastOutgoingArrow(StringBounder stringBounder) {
|
||||
for (int i = tiles.size() - 1; i >= 0; i--) {
|
||||
final Ftile tile = tiles.get(i);
|
||||
if (tile.calculateDimension(stringBounder).hasPointOut()) {
|
||||
if (tile.calculateDimension(stringBounder).hasPointOut())
|
||||
return i;
|
||||
}
|
||||
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
@ -80,8 +80,8 @@ public class FtileSwitchWithOneLink extends FtileSwitchWithDiamonds {
|
||||
final double x2 = p2.getX();
|
||||
final double y2 = p2.getY();
|
||||
|
||||
final Snake snake = Snake.create(null, arrowColor, Arrows.asToDown()).withLabel(branch.getTextBlockPositive(),
|
||||
arrowHorizontalAlignment());
|
||||
final Snake snake = Snake.create(null, arrowColor, Arrows.asToDown())
|
||||
.withLabel(branch.getTextBlockPositive(), arrowHorizontalAlignment());
|
||||
// snake.addPoint(x1, y1);
|
||||
snake.addPoint(x2, y1);
|
||||
snake.addPoint(x2, y2);
|
||||
@ -139,9 +139,8 @@ public class FtileSwitchWithOneLink extends FtileSwitchWithDiamonds {
|
||||
final Ftile single = tiles.get(0);
|
||||
conns.add(new ConnectionVerticalTop(single, branches.get(0)));
|
||||
|
||||
if (single.calculateDimension(stringBounder).hasPointOut()) {
|
||||
if (single.calculateDimension(stringBounder).hasPointOut())
|
||||
conns.add(new ConnectionVerticalBottom(single));
|
||||
}
|
||||
|
||||
return FtileUtils.addConnection(this, conns);
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ public class FtileBlackBlock extends AbstractFtile {
|
||||
private double width;
|
||||
private double height;
|
||||
private TextBlock label = TextBlockUtils.empty(0, 0);
|
||||
private final HColor colorBar;
|
||||
private HColor colorBar;
|
||||
private final Swimlane swimlane;
|
||||
|
||||
public FtileBlackBlock(ISkinParam skinParam, HColor colorBar, Swimlane swimlane) {
|
||||
@ -93,16 +93,17 @@ public class FtileBlackBlock extends AbstractFtile {
|
||||
return new FtileGeometry(width + supp, height, width / 2, 0, height);
|
||||
}
|
||||
|
||||
private StyleSignature getDefaultStyleDefinitionBar() {
|
||||
return StyleSignature.of(SName.root, SName.element, SName.activityBar);
|
||||
private StyleSignature getSignature() {
|
||||
return StyleSignature.of(SName.root, SName.element, SName.activityDiagram, SName.activityBar);
|
||||
}
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
final URectangle rect = new URectangle(width, height).rounded(5).ignoreForCompressionOnX();
|
||||
if (UseStyle.useBetaStyle()) {
|
||||
final Style style = getDefaultStyleDefinitionBar().getMergedStyle(skinParam().getCurrentStyleBuilder());
|
||||
final Style style = getSignature().getMergedStyle(skinParam().getCurrentStyleBuilder());
|
||||
final double shadowing = style.value(PName.Shadowing).asDouble();
|
||||
rect.setDeltaShadow(shadowing);
|
||||
colorBar = style.value(PName.BackGroundColor).asColor(skinParam().getThemeStyle(), getIHtmlColorSet());
|
||||
} else {
|
||||
if (skinParam().shadowing(null))
|
||||
rect.setDeltaShadow(3);
|
||||
|
@ -59,8 +59,8 @@ public class FtileCircleEnd extends AbstractFtile {
|
||||
|
||||
private static final int SIZE = 20;
|
||||
|
||||
private final HColor borderColor;
|
||||
private final HColor backColor;
|
||||
private HColor borderColor;
|
||||
private HColor backColor;
|
||||
private final Swimlane swimlane;
|
||||
private double shadowing;
|
||||
|
||||
@ -76,17 +76,18 @@ public class FtileCircleEnd extends AbstractFtile {
|
||||
this.swimlane = swimlane;
|
||||
if (UseStyle.useBetaStyle()) {
|
||||
this.shadowing = style.value(PName.Shadowing).asDouble();
|
||||
} else {
|
||||
if (skinParam().shadowing(null)) {
|
||||
this.shadowing = 3;
|
||||
}
|
||||
this.backColor = style.value(PName.BackGroundColor).asColor(skinParam.getThemeStyle(), getIHtmlColorSet());
|
||||
this.borderColor = style.value(PName.LineColor).asColor(skinParam.getThemeStyle(), getIHtmlColorSet());
|
||||
} else if (skinParam().shadowing(null)) {
|
||||
this.shadowing = 3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Set<Swimlane> getSwimlanes() {
|
||||
if (swimlane == null) {
|
||||
if (swimlane == null)
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
return Collections.singleton(swimlane);
|
||||
}
|
||||
|
||||
|
@ -57,18 +57,23 @@ public class FtileCircleStart extends AbstractFtile {
|
||||
|
||||
private static final int SIZE = 20;
|
||||
|
||||
private final HColor backColor;
|
||||
private HColor backColor;
|
||||
private HColor borderColor;
|
||||
private final Swimlane swimlane;
|
||||
private double shadowing;
|
||||
|
||||
public FtileCircleStart(ISkinParam skinParam, HColor backColor, Swimlane swimlane, Style style) {
|
||||
super(skinParam);
|
||||
this.backColor = backColor;
|
||||
this.swimlane = swimlane;
|
||||
if (UseStyle.useBetaStyle())
|
||||
this.backColor = backColor;
|
||||
this.borderColor = new HColorNone();
|
||||
if (UseStyle.useBetaStyle()) {
|
||||
this.shadowing = style.value(PName.Shadowing).asDouble();
|
||||
else if (skinParam().shadowing(null))
|
||||
this.backColor = style.value(PName.BackGroundColor).asColor(skinParam.getThemeStyle(), getIHtmlColorSet());
|
||||
this.borderColor = style.value(PName.LineColor).asColor(skinParam.getThemeStyle(), getIHtmlColorSet());
|
||||
} else if (skinParam().shadowing(null)) {
|
||||
this.shadowing = 3;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -77,9 +82,9 @@ public class FtileCircleStart extends AbstractFtile {
|
||||
}
|
||||
|
||||
public Set<Swimlane> getSwimlanes() {
|
||||
if (swimlane == null) {
|
||||
if (swimlane == null)
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
return Collections.singleton(swimlane);
|
||||
}
|
||||
|
||||
@ -94,7 +99,7 @@ public class FtileCircleStart extends AbstractFtile {
|
||||
public void drawU(UGraphic ug) {
|
||||
final UEllipse circle = new UEllipse(SIZE, SIZE);
|
||||
circle.setDeltaShadow(shadowing);
|
||||
ug.apply(new HColorNone()).apply(backColor.bg()).draw(circle);
|
||||
ug.apply(borderColor).apply(backColor.bg()).draw(circle);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -58,8 +58,8 @@ public class FtileCircleStop extends AbstractFtile {
|
||||
|
||||
private static final int SIZE = 22;
|
||||
|
||||
private final HColor borderColor;
|
||||
private final HColor backColor;
|
||||
private HColor borderColor;
|
||||
private HColor backColor;
|
||||
private final Swimlane swimlane;
|
||||
private double shadowing;
|
||||
|
||||
@ -75,17 +75,18 @@ public class FtileCircleStop extends AbstractFtile {
|
||||
this.swimlane = swimlane;
|
||||
if (UseStyle.useBetaStyle()) {
|
||||
this.shadowing = style.value(PName.Shadowing).asDouble();
|
||||
} else {
|
||||
if (skinParam().shadowing(null)) {
|
||||
this.shadowing = 3;
|
||||
}
|
||||
this.backColor = style.value(PName.BackGroundColor).asColor(skinParam.getThemeStyle(), getIHtmlColorSet());
|
||||
this.borderColor = style.value(PName.LineColor).asColor(skinParam.getThemeStyle(), getIHtmlColorSet());
|
||||
} else if (skinParam().shadowing(null)) {
|
||||
this.shadowing = 3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Set<Swimlane> getSwimlanes() {
|
||||
if (swimlane == null) {
|
||||
if (swimlane == null)
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
return Collections.singleton(swimlane);
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,8 @@ public class FtileDiamondSquare extends FtileDiamondWIP {
|
||||
final Dimension2D dimLabel = label.calculateDimension(stringBounder);
|
||||
final Dimension2D dimTotal = calculateDimensionInternal(stringBounder);
|
||||
ug = ug.apply(borderColor).apply(getThickness()).apply(backColor.bg());
|
||||
ug.draw(Hexagon.asPolygonSquare(skinParam().shadowing(null), dimTotal.getWidth(), dimTotal.getHeight()));
|
||||
|
||||
ug.draw(Hexagon.asPolygonSquare(shadowing, dimTotal.getWidth(), dimTotal.getHeight()));
|
||||
|
||||
// Fix why north and south are the same
|
||||
north.drawU(ug.apply(new UTranslate(4 + dimTotal.getWidth() / 2, dimTotal.getHeight())));
|
||||
@ -114,9 +115,9 @@ public class FtileDiamondSquare extends FtileDiamondWIP {
|
||||
|
||||
private Dimension2D calculateDimensionInternal(StringBounder stringBounder) {
|
||||
final Dimension2D dimLabel = label.calculateDimension(stringBounder);
|
||||
if (dimLabel.getWidth() == 0 || dimLabel.getHeight() == 0) {
|
||||
if (dimLabel.getWidth() == 0 || dimLabel.getHeight() == 0)
|
||||
return new Dimension2DDouble(Hexagon.hexagonHalfSize * 2, Hexagon.hexagonHalfSize * 2);
|
||||
}
|
||||
|
||||
Dimension2D result = dimLabel;
|
||||
result = Dimension2DDouble.delta(result, Hexagon.hexagonHalfSize * 2, Hexagon.hexagonHalfSize * 2);
|
||||
return result;
|
||||
|
@ -42,7 +42,7 @@ import net.sourceforge.plantuml.core.UmlSource;
|
||||
|
||||
public interface PSystemFactory {
|
||||
|
||||
Diagram createSystem(UmlSource source, ISkinSimple skinParam);
|
||||
Diagram createSystem(ThemeStyle style, UmlSource source, ISkinSimple skinParam);
|
||||
|
||||
DiagramType getDiagramType();
|
||||
|
||||
|
@ -33,10 +33,10 @@
|
||||
*
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml;
|
||||
package net.sourceforge.plantuml.api;
|
||||
|
||||
public enum ThemeStyle {
|
||||
|
||||
DARK, LIGHT
|
||||
LIGHT_REGULAR, DARK
|
||||
|
||||
}
|
@ -46,6 +46,7 @@ import net.sourceforge.plantuml.Dimension2DDouble;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
@ -69,17 +70,15 @@ public class BoardDiagram extends UmlDiagram {
|
||||
return new DiagramDescription("Board");
|
||||
}
|
||||
|
||||
public BoardDiagram(UmlSource source) {
|
||||
super(source, UmlDiagramType.BOARD);
|
||||
public BoardDiagram(ThemeStyle style, UmlSource source) {
|
||||
super(style, source, UmlDiagramType.BOARD);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ImageData exportDiagramInternal(OutputStream os, int index, FileFormatOption fileFormatOption)
|
||||
throws IOException {
|
||||
|
||||
return createImageBuilder(fileFormatOption)
|
||||
.drawable(getTextBlock())
|
||||
.write(os);
|
||||
return createImageBuilder(fileFormatOption).drawable(getTextBlock()).write(os);
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getTextBlock() {
|
||||
|
@ -39,9 +39,10 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.command.CommonCommands;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
|
||||
@ -68,8 +69,8 @@ public class BoardDiagramFactory extends PSystemCommandFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public BoardDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new BoardDiagram(source);
|
||||
public BoardDiagram createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new BoardDiagram(style, source);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.SkinParam;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
@ -74,29 +75,26 @@ public class BpmDiagram extends UmlDiagram {
|
||||
return new DiagramDescription("(Bpm Diagram)");
|
||||
}
|
||||
|
||||
public BpmDiagram(UmlSource source) {
|
||||
super(source, UmlDiagramType.BPM);
|
||||
public BpmDiagram(ThemeStyle style, UmlSource source) {
|
||||
super(style, source, UmlDiagramType.BPM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageBuilder createImageBuilder(FileFormatOption fileFormatOption) throws IOException {
|
||||
return super.createImageBuilder(fileFormatOption)
|
||||
.annotations(false);
|
||||
return super.createImageBuilder(fileFormatOption).annotations(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ImageData exportDiagramInternal(OutputStream os, int index, FileFormatOption fileFormatOption)
|
||||
throws IOException {
|
||||
|
||||
return createImageBuilder(fileFormatOption)
|
||||
.drawable(getUDrawable())
|
||||
.write(os);
|
||||
return createImageBuilder(fileFormatOption).drawable(getUDrawable()).write(os);
|
||||
}
|
||||
|
||||
private UDrawable getUDrawable() {
|
||||
final Grid grid = createGrid();
|
||||
cleanGrid(grid);
|
||||
final GridArray gridArray = grid.toArray(SkinParam.create(getUmlDiagramType()));
|
||||
final GridArray gridArray = grid.toArray(SkinParam.create(getUmlDiagramType(), ThemeStyle.LIGHT_REGULAR));
|
||||
// gridArray.addEdges(edges);
|
||||
// System.err.println("gridArray=" + gridArray);
|
||||
return gridArray;
|
||||
|
@ -40,6 +40,7 @@ import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.AbstractPSystem;
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
@ -65,8 +66,8 @@ public class BpmDiagramFactory extends PSystemCommandFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractPSystem createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new BpmDiagram(source);
|
||||
public AbstractPSystem createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new BpmDiagram(style, source);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -35,7 +35,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.braille;
|
||||
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.graphic.UDrawable;
|
||||
import net.sourceforge.plantuml.ugraphic.UEllipse;
|
||||
import net.sourceforge.plantuml.ugraphic.UGraphic;
|
||||
@ -55,7 +55,7 @@ public class BrailleDrawer implements UDrawable {
|
||||
}
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
ug = ug.apply(HColorSet.instance().getColorOrWhite(ThemeStyle.LIGHT, "#F0F0F0"));
|
||||
ug = ug.apply(HColorSet.instance().getColorOrWhite(ThemeStyle.LIGHT_REGULAR, "#F0F0F0"));
|
||||
for (int x = grid.getMinX(); x <= grid.getMaxX(); x++) {
|
||||
ug.apply(UTranslate.dx(x * step + spotSize + 1))
|
||||
.draw(ULine.vline((grid.getMaxY() - grid.getMinY()) * step));
|
||||
|
@ -42,14 +42,15 @@ import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.cucadiagram.CucaDiagram;
|
||||
|
||||
public abstract class AbstractEntityDiagram extends CucaDiagram {
|
||||
|
||||
public AbstractEntityDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
super(source, type, orig);
|
||||
public AbstractEntityDiagram(ThemeStyle style, UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
super(style, source, type, orig);
|
||||
}
|
||||
|
||||
final protected List<String> getDotStrings() {
|
||||
|
@ -42,6 +42,7 @@ import java.util.Objects;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.creole.CreoleMode;
|
||||
@ -61,8 +62,8 @@ import net.sourceforge.plantuml.svek.image.EntityImageClass;
|
||||
|
||||
public class ClassDiagram extends AbstractClassOrObjectDiagram {
|
||||
|
||||
public ClassDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
super(source, UmlDiagramType.CLASS, skinParam);
|
||||
public ClassDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
super(style, source, UmlDiagramType.CLASS, skinParam);
|
||||
}
|
||||
|
||||
private Code getShortName1972(Code code) {
|
||||
@ -195,10 +196,9 @@ public class ClassDiagram extends AbstractClassOrObjectDiagram {
|
||||
final RowLayout rawLayout = getRawLayout(i);
|
||||
fullLayout.addRowLayout(rawLayout);
|
||||
}
|
||||
return createImageBuilder(fileFormatOption)
|
||||
.annotations(false) // Backwards compatibility - this only applies when "layout_new_line" is used
|
||||
.drawable(fullLayout)
|
||||
.write(os);
|
||||
return createImageBuilder(fileFormatOption).annotations(false) // Backwards compatibility - this only applies
|
||||
// when "layout_new_line" is used
|
||||
.drawable(fullLayout).write(os);
|
||||
}
|
||||
|
||||
private RowLayout getRawLayout(int raw) {
|
||||
|
@ -40,6 +40,7 @@ import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.classdiagram.command.CommandAddMethod;
|
||||
import net.sourceforge.plantuml.classdiagram.command.CommandAllowMixing;
|
||||
import net.sourceforge.plantuml.classdiagram.command.CommandCreateClass;
|
||||
@ -64,8 +65,8 @@ import net.sourceforge.plantuml.command.CommandNamespaceEmpty;
|
||||
import net.sourceforge.plantuml.command.CommandPackage;
|
||||
import net.sourceforge.plantuml.command.CommandPackageEmpty;
|
||||
import net.sourceforge.plantuml.command.CommandRankDir;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.command.CommonCommands;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.command.note.CommandConstraintOnLinks;
|
||||
import net.sourceforge.plantuml.command.note.CommandFactoryNote;
|
||||
import net.sourceforge.plantuml.command.note.CommandFactoryNoteOnEntity;
|
||||
@ -84,8 +85,8 @@ import net.sourceforge.plantuml.objectdiagram.command.CommandCreateMap;
|
||||
public class ClassDiagramFactory extends PSystemCommandFactory {
|
||||
|
||||
@Override
|
||||
public ClassDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new ClassDiagram(source, skinParam);
|
||||
public ClassDiagram createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new ClassDiagram(style, source, skinParam);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -36,7 +36,6 @@
|
||||
package net.sourceforge.plantuml.command;
|
||||
|
||||
import net.sourceforge.plantuml.LineLocation;
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.TitledDiagram;
|
||||
import net.sourceforge.plantuml.command.regex.IRegex;
|
||||
import net.sourceforge.plantuml.command.regex.RegexConcat;
|
||||
@ -61,8 +60,9 @@ public class CommandAssumeTransparent extends SingleLineCommand2<TitledDiagram>
|
||||
|
||||
@Override
|
||||
protected CommandExecutionResult executeArg(TitledDiagram system, LineLocation location, RegexResult arg) {
|
||||
final String type = arg.get("TYPE", 0).toUpperCase();
|
||||
system.getSkinParam().assumeTransparent(ThemeStyle.valueOf(type));
|
||||
// final String type = arg.get("TYPE", 0).toUpperCase();
|
||||
// system.getSkinParam().assumeTransparent(ThemeStyle.valueOf(type));
|
||||
// This is ignored and will be suppressed in some future
|
||||
return CommandExecutionResult.ok();
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,7 @@ import net.sourceforge.plantuml.ErrorUml;
|
||||
import net.sourceforge.plantuml.ErrorUmlType;
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.StringLocated;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -57,20 +58,20 @@ public abstract class PSystemBasicFactory<P extends AbstractPSystem> extends PSy
|
||||
this(DiagramType.UML);
|
||||
}
|
||||
|
||||
public abstract P executeLine(UmlSource source, P system, String line);
|
||||
public abstract P executeLine(ThemeStyle style, UmlSource source, P system, String line);
|
||||
|
||||
public abstract P initDiagram(UmlSource source, String startLine);
|
||||
public abstract P initDiagram(ThemeStyle style, UmlSource source, String startLine);
|
||||
|
||||
private boolean isEmptyLine(StringLocated result) {
|
||||
return result.getTrimmed().getString().length() == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
final public Diagram createSystem(UmlSource source, ISkinSimple skinParam) {
|
||||
final public Diagram createSystem(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
source = source.removeInitialSkinparam();
|
||||
final IteratorCounter2 it = source.iterator2();
|
||||
final StringLocated startLine = it.next();
|
||||
P system = initDiagram(source, startLine.getString());
|
||||
P system = initDiagram(style, source, startLine.getString());
|
||||
boolean first = true;
|
||||
while (it.hasNext()) {
|
||||
final StringLocated s = it.next();
|
||||
@ -84,7 +85,7 @@ public abstract class PSystemBasicFactory<P extends AbstractPSystem> extends PSy
|
||||
}
|
||||
return system;
|
||||
}
|
||||
system = executeLine(source, system, s.getString());
|
||||
system = executeLine(style, source, system, s.getString());
|
||||
if (system == null) {
|
||||
final ErrorUml err = new ErrorUml(ErrorUmlType.SYNTAX_ERROR, "Syntax Error?", 0, s.getLocation());
|
||||
// return PSystemErrorUtils.buildV1(source, err, null);
|
||||
|
@ -43,6 +43,7 @@ import net.sourceforge.plantuml.ErrorUmlType;
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.LineLocation;
|
||||
import net.sourceforge.plantuml.StringLocated;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -57,7 +58,7 @@ public abstract class PSystemCommandFactory extends PSystemAbstractFactory {
|
||||
|
||||
protected abstract List<Command> createCommands();
|
||||
|
||||
public abstract AbstractPSystem createEmptyDiagram(UmlSource source, ISkinSimple skinParam);
|
||||
public abstract AbstractPSystem createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam);
|
||||
|
||||
protected PSystemCommandFactory() {
|
||||
this(DiagramType.UML);
|
||||
@ -68,7 +69,7 @@ public abstract class PSystemCommandFactory extends PSystemAbstractFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
final public Diagram createSystem(UmlSource source, ISkinSimple skinParam) {
|
||||
final public Diagram createSystem(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
final IteratorCounter2 it = source.iterator2();
|
||||
final StringLocated startLine = it.next();
|
||||
if (StartUtils.isArobaseStartDiagram(startLine.getString()) == false)
|
||||
@ -80,7 +81,7 @@ public abstract class PSystemCommandFactory extends PSystemAbstractFactory {
|
||||
|
||||
return buildEmptyError(source, startLine.getLocation(), it.getTrace());
|
||||
}
|
||||
AbstractPSystem sys = createEmptyDiagram(source, skinParam);
|
||||
AbstractPSystem sys = createEmptyDiagram(style, source, skinParam);
|
||||
|
||||
while (it.hasNext()) {
|
||||
if (StartUtils.isArobaseEndDiagram(it.peek().getString())) {
|
||||
|
@ -41,6 +41,7 @@ import net.sourceforge.plantuml.ErrorUmlType;
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.LineLocation;
|
||||
import net.sourceforge.plantuml.StringLocated;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -57,11 +58,11 @@ public abstract class PSystemSingleLineFactory extends PSystemAbstractFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
final public Diagram createSystem(UmlSource source, ISkinSimple skinParam) {
|
||||
final public Diagram createSystem(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
|
||||
if (source.getTotalLineCount() != 3) {
|
||||
if (source.getTotalLineCount() != 3)
|
||||
return null;
|
||||
}
|
||||
|
||||
final IteratorCounter2 it = source.iterator2();
|
||||
if (source.isEmpty()) {
|
||||
final LineLocation location = it.next().getLocation();
|
||||
@ -69,17 +70,16 @@ public abstract class PSystemSingleLineFactory extends PSystemAbstractFactory {
|
||||
}
|
||||
|
||||
final StringLocated startLine = it.next();
|
||||
if (StartUtils.isArobaseStartDiagram(startLine.getString()) == false) {
|
||||
if (StartUtils.isArobaseStartDiagram(startLine.getString()) == false)
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
if (it.hasNext() == false) {
|
||||
if (it.hasNext() == false)
|
||||
return buildEmptyError(source, startLine.getLocation(), it.getTrace());
|
||||
}
|
||||
|
||||
final StringLocated s = it.next();
|
||||
if (StartUtils.isArobaseEndDiagram(s.getString())) {
|
||||
if (StartUtils.isArobaseEndDiagram(s.getString()))
|
||||
return buildEmptyError(source, s.getLocation(), it.getTrace());
|
||||
}
|
||||
|
||||
final AbstractPSystem sys = executeLine(source, s.getString());
|
||||
if (sys == null) {
|
||||
final ErrorUml err = new ErrorUml(ErrorUmlType.SYNTAX_ERROR, "Syntax Error?", 0, s.getLocation());
|
||||
|
@ -39,6 +39,7 @@ import java.util.Objects;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.classdiagram.AbstractEntityDiagram;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.cucadiagram.Code;
|
||||
@ -49,8 +50,8 @@ import net.sourceforge.plantuml.graphic.USymbol;
|
||||
|
||||
public class CompositeDiagram extends AbstractEntityDiagram {
|
||||
|
||||
public CompositeDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
super(source, UmlDiagramType.COMPOSITE, skinParam);
|
||||
public CompositeDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
super(style, source, UmlDiagramType.COMPOSITE, skinParam);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -39,9 +39,10 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.command.CommonCommands;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.compositediagram.command.CommandCreateBlock;
|
||||
import net.sourceforge.plantuml.compositediagram.command.CommandCreatePackageBlock;
|
||||
import net.sourceforge.plantuml.compositediagram.command.CommandEndPackageBlock;
|
||||
@ -69,7 +70,7 @@ public class CompositeDiagramFactory extends PSystemCommandFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompositeDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new CompositeDiagram(source, skinParam);
|
||||
public CompositeDiagram createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new CompositeDiagram(style, source, skinParam);
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ public class PSystemCreole extends PlainDiagram {
|
||||
final UFont font = UFont.serif(14);
|
||||
final FontConfiguration fontConfiguration = FontConfiguration.blackBlueTrue(font);
|
||||
final Sheet sheet = Parser.build(fontConfiguration, HorizontalAlignment.LEFT,
|
||||
SkinParam.create(UmlDiagramType.SEQUENCE), CreoleMode.FULL).createSheet(display);
|
||||
SkinParam.create(UmlDiagramType.SEQUENCE, fileFormatOption.getStyle()), CreoleMode.FULL).createSheet(display);
|
||||
return new SheetBlock1(sheet, LineBreakStrategy.NONE, 0);
|
||||
|
||||
// final Dimension2D dim = TextBlockUtils.getDimension(sheetBlock);
|
||||
|
@ -35,6 +35,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.creole.legacy;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemBasicFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -46,15 +47,15 @@ public class PSystemCreoleFactory extends PSystemBasicFactory<PSystemCreole> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemCreole initDiagram(UmlSource source, String startLine) {
|
||||
if (getDiagramType() == DiagramType.CREOLE) {
|
||||
public PSystemCreole initDiagram(ThemeStyle style, UmlSource source, String startLine) {
|
||||
if (getDiagramType() == DiagramType.CREOLE)
|
||||
return new PSystemCreole(source);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemCreole executeLine(UmlSource source, PSystemCreole system, String line) {
|
||||
public PSystemCreole executeLine(ThemeStyle style, UmlSource source, PSystemCreole system, String line) {
|
||||
system.doCommandLine(line);
|
||||
return system;
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ import net.sourceforge.plantuml.Log;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ImageDataSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -119,8 +120,8 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy,
|
||||
return ident;
|
||||
}
|
||||
|
||||
public CucaDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
super(source, type, orig);
|
||||
public CucaDiagram(ThemeStyle style, UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
super(style, source, type, orig);
|
||||
this.stacks2.add(Ident.empty());
|
||||
}
|
||||
|
||||
|
@ -54,16 +54,16 @@ public class DisplaySection {
|
||||
|
||||
public DisplaySection withPage(int page, int lastpage) {
|
||||
final DisplaySection result = new DisplaySection();
|
||||
for (Map.Entry<HorizontalAlignment, Display> ent : this.map.entrySet()) {
|
||||
for (Map.Entry<HorizontalAlignment, Display> ent : this.map.entrySet())
|
||||
result.map.put(ent.getKey(), ent.getValue().withPage(page, lastpage));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public Display getDisplay() {
|
||||
if (map.size() == 0) {
|
||||
if (map.size() == 0)
|
||||
return null;
|
||||
}
|
||||
|
||||
return map.values().iterator().next();
|
||||
}
|
||||
|
||||
@ -72,31 +72,31 @@ public class DisplaySection {
|
||||
}
|
||||
|
||||
public final HorizontalAlignment getHorizontalAlignment() {
|
||||
if (map.size() == 0) {
|
||||
if (map.size() == 0)
|
||||
return HorizontalAlignment.CENTER;
|
||||
}
|
||||
|
||||
return map.keySet().iterator().next();
|
||||
}
|
||||
|
||||
public boolean isNull() {
|
||||
if (map.size() == 0) {
|
||||
if (map.size() == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
final Display display = map.values().iterator().next();
|
||||
return Display.isNull(display);
|
||||
}
|
||||
|
||||
public TextBlock createRibbon(FontConfiguration fontConfiguration, ISkinSimple spriteContainer, Style style) {
|
||||
if (map.size() == 0) {
|
||||
if (map.size() == 0)
|
||||
return null;
|
||||
}
|
||||
|
||||
final Display display = map.values().iterator().next();
|
||||
if (Display.isNull(display) || display.size() == 0) {
|
||||
if (Display.isNull(display) || display.size() == 0)
|
||||
return null;
|
||||
}
|
||||
if (style != null) {
|
||||
|
||||
if (style != null)
|
||||
return style.createTextBlockBordered(display, spriteContainer.getIHtmlColorSet(), spriteContainer);
|
||||
}
|
||||
|
||||
return display.create(fontConfiguration, getHorizontalAlignment(), spriteContainer);
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.graphic.color.ColorType;
|
||||
import net.sourceforge.plantuml.graphic.color.Colors;
|
||||
import net.sourceforge.plantuml.ugraphic.UStroke;
|
||||
|
@ -35,6 +35,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.definition;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemBasicFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -46,15 +47,15 @@ public class PSystemDefinitionFactory extends PSystemBasicFactory<PSystemDefinit
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemDefinition initDiagram(UmlSource source, String startLine) {
|
||||
if (getDiagramType() == DiagramType.DEFINITION) {
|
||||
public PSystemDefinition initDiagram(ThemeStyle style, UmlSource source, String startLine) {
|
||||
if (getDiagramType() == DiagramType.DEFINITION)
|
||||
return new PSystemDefinition(source, startLine);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemDefinition executeLine(UmlSource source, PSystemDefinition system, String line) {
|
||||
public PSystemDefinition executeLine(ThemeStyle style, UmlSource source, PSystemDefinition system, String line) {
|
||||
system.doCommandLine(line);
|
||||
return system;
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ import java.util.Objects;
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.StringUtils;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.classdiagram.AbstractEntityDiagram;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.cucadiagram.Code;
|
||||
@ -50,8 +51,8 @@ import net.sourceforge.plantuml.graphic.USymbol;
|
||||
|
||||
public class DescriptionDiagram extends AbstractEntityDiagram {
|
||||
|
||||
public DescriptionDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
super(source, UmlDiagramType.DESCRIPTION, skinParam);
|
||||
public DescriptionDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
super(style, source, UmlDiagramType.DESCRIPTION, skinParam);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -39,6 +39,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.classdiagram.command.CommandHideShow2;
|
||||
import net.sourceforge.plantuml.classdiagram.command.CommandNamespaceSeparator;
|
||||
import net.sourceforge.plantuml.classdiagram.command.CommandRemoveRestore;
|
||||
@ -47,8 +48,8 @@ import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.CommandEndPackage;
|
||||
import net.sourceforge.plantuml.command.CommandFootboxIgnored;
|
||||
import net.sourceforge.plantuml.command.CommandRankDir;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.command.CommonCommands;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.command.note.CommandFactoryNote;
|
||||
import net.sourceforge.plantuml.command.note.CommandFactoryNoteOnEntity;
|
||||
import net.sourceforge.plantuml.command.note.CommandFactoryNoteOnLink;
|
||||
@ -66,8 +67,8 @@ import net.sourceforge.plantuml.descdiagram.command.CommandPackageWithUSymbol;
|
||||
public class DescriptionDiagramFactory extends PSystemCommandFactory {
|
||||
|
||||
@Override
|
||||
public DescriptionDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new DescriptionDiagram(source, skinParam);
|
||||
public DescriptionDiagram createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new DescriptionDiagram(style, source, skinParam);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -63,11 +63,12 @@ public class CommandNewpage extends SingleLineCommand2<UmlDiagram> {
|
||||
@Override
|
||||
protected CommandExecutionResult executeArg(UmlDiagram diagram, LineLocation location, RegexResult arg) {
|
||||
final int dpi = diagram.getSkinParam().getDpi();
|
||||
final UmlDiagram emptyDiagram = (UmlDiagram) factory.createEmptyDiagram(diagram.getSource(), diagram.getSkinParam());
|
||||
if (dpi != 96) {
|
||||
final UmlDiagram emptyDiagram = (UmlDiagram) factory.createEmptyDiagram(diagram.getSkinParam().getThemeStyle(),
|
||||
diagram.getSource(), diagram.getSkinParam());
|
||||
if (dpi != 96)
|
||||
emptyDiagram.setParam("dpi", "" + dpi);
|
||||
}
|
||||
NewpagedDiagram result = new NewpagedDiagram(diagram.getSource(), diagram, emptyDiagram);
|
||||
|
||||
final NewpagedDiagram result = new NewpagedDiagram(diagram.getSource(), diagram, emptyDiagram);
|
||||
return CommandExecutionResult.newDiagram(result);
|
||||
}
|
||||
}
|
||||
|
@ -34,6 +34,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.directdot;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemBasicFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -47,21 +48,21 @@ public class PSystemDotFactory extends PSystemBasicFactory<PSystemDot> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemDot initDiagram(UmlSource source, String startLine) {
|
||||
public PSystemDot initDiagram(ThemeStyle style, UmlSource source, String startLine) {
|
||||
data = null;
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemDot executeLine(UmlSource source, PSystemDot system, String line) {
|
||||
public PSystemDot executeLine(ThemeStyle style, UmlSource source, PSystemDot system, String line) {
|
||||
if (system == null && line.matches("(strict\\s+)?(di)?graph\\s+\"?[-\\w]+\"?\\s*\\{")) {
|
||||
data = new StringBuilder(line);
|
||||
data.append("\n");
|
||||
return new PSystemDot(source, data.toString());
|
||||
}
|
||||
if (data == null || system == null) {
|
||||
if (data == null || system == null)
|
||||
return null;
|
||||
}
|
||||
|
||||
data.append(line);
|
||||
data.append("\n");
|
||||
return new PSystemDot(source, data.toString());
|
||||
|
@ -37,10 +37,10 @@ package net.sourceforge.plantuml.ditaa;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemBasicFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.definition.PSystemDefinition;
|
||||
|
||||
public class PSystemDitaaFactory extends PSystemBasicFactory<PSystemDitaa> {
|
||||
|
||||
@ -56,15 +56,15 @@ public class PSystemDitaaFactory extends PSystemBasicFactory<PSystemDitaa> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemDitaa initDiagram(UmlSource source, String startLine) {
|
||||
public PSystemDitaa initDiagram(ThemeStyle style, UmlSource source, String startLine) {
|
||||
boolean performSeparationOfCommonEdges = true;
|
||||
if (startLine != null && (startLine.contains("-E") || startLine.contains("--no-separation"))) {
|
||||
if (startLine != null && (startLine.contains("-E") || startLine.contains("--no-separation")))
|
||||
performSeparationOfCommonEdges = false;
|
||||
}
|
||||
|
||||
boolean dropShadows = true;
|
||||
if (startLine != null && (startLine.contains("-S") || startLine.contains("--no-shadows"))) {
|
||||
if (startLine != null && (startLine.contains("-S") || startLine.contains("--no-shadows")))
|
||||
dropShadows = false;
|
||||
}
|
||||
|
||||
final float scale = extractScale(startLine);
|
||||
if (getDiagramType() == DiagramType.UML) {
|
||||
return null;
|
||||
@ -76,29 +76,29 @@ public class PSystemDitaaFactory extends PSystemBasicFactory<PSystemDitaa> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemDitaa executeLine(UmlSource source, PSystemDitaa system, String line) {
|
||||
public PSystemDitaa executeLine(ThemeStyle style, UmlSource source, PSystemDitaa system, String line) {
|
||||
if (system == null && (line.equals("ditaa") || line.startsWith("ditaa("))) {
|
||||
boolean performSeparationOfCommonEdges = true;
|
||||
if (line.contains("-E") || line.contains("--no-separation")) {
|
||||
if (line.contains("-E") || line.contains("--no-separation"))
|
||||
performSeparationOfCommonEdges = false;
|
||||
}
|
||||
|
||||
boolean dropShadows = true;
|
||||
if (line.contains("-S") || line.contains("--no-shadows")) {
|
||||
if (line.contains("-S") || line.contains("--no-shadows"))
|
||||
dropShadows = false;
|
||||
}
|
||||
|
||||
final float scale = extractScale(line);
|
||||
return new PSystemDitaa(source, "", performSeparationOfCommonEdges, dropShadows, scale);
|
||||
}
|
||||
if (system == null) {
|
||||
if (system == null)
|
||||
return null;
|
||||
}
|
||||
|
||||
return system.add(line);
|
||||
}
|
||||
|
||||
private float extractScale(String line) {
|
||||
if (line == null) {
|
||||
if (line == null)
|
||||
return 1;
|
||||
}
|
||||
|
||||
final Pattern p = Pattern.compile("scale=([\\d.]+)");
|
||||
final Matcher m = p.matcher(line);
|
||||
if (m.find()) {
|
||||
|
@ -37,6 +37,7 @@ package net.sourceforge.plantuml.eggs;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.api.PSystemFactory;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -45,10 +46,10 @@ import net.sourceforge.plantuml.graphic.GraphicPosition;
|
||||
public class PSystemWelcomeFactory implements PSystemFactory {
|
||||
|
||||
@Override
|
||||
public Diagram createSystem(UmlSource source, ISkinSimple skinParam) {
|
||||
if (source.getTotalLineCount() == 2) {
|
||||
public Diagram createSystem(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
if (source.getTotalLineCount() == 2)
|
||||
return new PSystemWelcome(source, GraphicPosition.BACKGROUND_CORNER_BOTTOM_RIGHT);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -39,6 +39,16 @@ import java.awt.geom.Point2D;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ColorParam;
|
||||
import net.sourceforge.plantuml.ISkinParam;
|
||||
import net.sourceforge.plantuml.LineParam;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.UseStyle;
|
||||
import net.sourceforge.plantuml.cucadiagram.CucaDiagram;
|
||||
import net.sourceforge.plantuml.cucadiagram.Link;
|
||||
import net.sourceforge.plantuml.cucadiagram.LinkDecor;
|
||||
import net.sourceforge.plantuml.cucadiagram.LinkType;
|
||||
|
||||
/*
|
||||
* You can choose between real "org.eclipse.elk..." classes or proxied "net.sourceforge.plantuml.elk.proxy..."
|
||||
*
|
||||
@ -61,19 +71,14 @@ import net.sourceforge.plantuml.elk.proxy.graph.ElkBendPoint;
|
||||
import net.sourceforge.plantuml.elk.proxy.graph.ElkEdge;
|
||||
import net.sourceforge.plantuml.elk.proxy.graph.ElkEdgeSection;
|
||||
import net.sourceforge.plantuml.elk.proxy.graph.ElkLabel;
|
||||
|
||||
import net.sourceforge.plantuml.ColorParam;
|
||||
import net.sourceforge.plantuml.LineParam;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.cucadiagram.CucaDiagram;
|
||||
import net.sourceforge.plantuml.cucadiagram.Link;
|
||||
import net.sourceforge.plantuml.cucadiagram.LinkDecor;
|
||||
import net.sourceforge.plantuml.cucadiagram.LinkType;
|
||||
import net.sourceforge.plantuml.graphic.TextBlock;
|
||||
import net.sourceforge.plantuml.graphic.UDrawable;
|
||||
import net.sourceforge.plantuml.graphic.color.ColorType;
|
||||
import net.sourceforge.plantuml.skin.rose.Rose;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleSignature;
|
||||
import net.sourceforge.plantuml.svek.extremity.ExtremityFactory;
|
||||
import net.sourceforge.plantuml.svek.extremity.ExtremityFactoryExtends;
|
||||
import net.sourceforge.plantuml.ugraphic.UGraphic;
|
||||
@ -109,43 +114,51 @@ public class ElkPath implements UDrawable {
|
||||
}
|
||||
|
||||
private ColorParam getArrowColorParam() {
|
||||
if (diagram.getUmlDiagramType() == UmlDiagramType.CLASS) {
|
||||
if (diagram.getUmlDiagramType() == UmlDiagramType.CLASS)
|
||||
return ColorParam.arrow;
|
||||
} else if (diagram.getUmlDiagramType() == UmlDiagramType.OBJECT) {
|
||||
else if (diagram.getUmlDiagramType() == UmlDiagramType.OBJECT)
|
||||
return ColorParam.arrow;
|
||||
} else if (diagram.getUmlDiagramType() == UmlDiagramType.DESCRIPTION) {
|
||||
else if (diagram.getUmlDiagramType() == UmlDiagramType.DESCRIPTION)
|
||||
return ColorParam.arrow;
|
||||
} else if (diagram.getUmlDiagramType() == UmlDiagramType.ACTIVITY) {
|
||||
else if (diagram.getUmlDiagramType() == UmlDiagramType.ACTIVITY)
|
||||
return ColorParam.arrow;
|
||||
} else if (diagram.getUmlDiagramType() == UmlDiagramType.STATE) {
|
||||
else if (diagram.getUmlDiagramType() == UmlDiagramType.STATE)
|
||||
return ColorParam.arrow;
|
||||
}
|
||||
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
private Style getStyle() {
|
||||
final StyleSignature signature = StyleSignature.of(SName.root, SName.element, styleName, SName.arrow);
|
||||
return signature.getMergedStyle(diagram.getCurrentStyleBuilder());
|
||||
}
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
|
||||
if (link.isHidden()) {
|
||||
if (link.isHidden())
|
||||
return;
|
||||
}
|
||||
|
||||
HColor color = rose.getHtmlColor(diagram.getSkinParam(), null, getArrowColorParam());
|
||||
HColor color;
|
||||
final ISkinParam skinParam = diagram.getSkinParam();
|
||||
|
||||
if (UseStyle.useBetaStyle())
|
||||
color = getStyle().value(PName.LineColor).asColor(skinParam.getThemeStyle(), skinParam.getIHtmlColorSet());
|
||||
else
|
||||
color = rose.getHtmlColor(skinParam, null, getArrowColorParam());
|
||||
|
||||
if (this.link.getColors() != null) {
|
||||
final HColor newColor = this.link.getColors().getColor(ColorType.ARROW, ColorType.LINE);
|
||||
if (newColor != null) {
|
||||
if (newColor != null)
|
||||
color = newColor;
|
||||
}
|
||||
|
||||
} else if (this.link.getSpecificColor() != null) {
|
||||
color = this.link.getSpecificColor();
|
||||
}
|
||||
|
||||
final LinkType linkType = link.getType();
|
||||
UStroke stroke = linkType.getStroke3(diagram.getSkinParam().getThickness(LineParam.arrow, null));
|
||||
if (link.getColors() != null && link.getColors().getSpecificLineStroke() != null) {
|
||||
UStroke stroke = linkType.getStroke3(skinParam.getThickness(LineParam.arrow, null));
|
||||
if (link.getColors() != null && link.getColors().getSpecificLineStroke() != null)
|
||||
stroke = link.getColors().getSpecificLineStroke();
|
||||
}
|
||||
|
||||
ug = ug.apply(stroke).apply(color);
|
||||
|
||||
final List<ElkEdgeSection> sections = edge.getSections();
|
||||
@ -195,15 +208,15 @@ public class ElkPath implements UDrawable {
|
||||
final TextBlock labelLink;
|
||||
// Nasty trick: we store the type of label (center/head/tail) in the text
|
||||
final String type = label.getText();
|
||||
if ("X".equals(type)) {
|
||||
if ("X".equals(type))
|
||||
labelLink = centerLabel;
|
||||
} else if ("1".equals(type)) {
|
||||
else if ("1".equals(type))
|
||||
labelLink = tailLabel;
|
||||
} else if ("2".equals(type)) {
|
||||
else if ("2".equals(type))
|
||||
labelLink = headLabel;
|
||||
} else {
|
||||
else
|
||||
continue;
|
||||
}
|
||||
|
||||
labelLink.drawU(ug.apply(new UTranslate(x, y)));
|
||||
}
|
||||
}
|
||||
|
@ -54,41 +54,39 @@ public class PSystemErrorUtils {
|
||||
}
|
||||
|
||||
public static PSystemError merge(Collection<PSystemError> ps) {
|
||||
if (ps.size() == 0) {
|
||||
if (ps.size() == 0)
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
UmlSource source = null;
|
||||
final List<ErrorUml> errors = new ArrayList<>();
|
||||
// final List<String> debugs = new ArrayList<>();
|
||||
final List<PSystemErrorV2> errorsV2 = new ArrayList<>();
|
||||
for (PSystemError system : ps) {
|
||||
if (system == null) {
|
||||
if (system == null)
|
||||
continue;
|
||||
}
|
||||
if (system.getSource() != null && source == null) {
|
||||
|
||||
if (system.getSource() != null && source == null)
|
||||
source = system.getSource();
|
||||
}
|
||||
|
||||
errors.addAll(system.getErrorsUml());
|
||||
if (system instanceof PSystemErrorV2) {
|
||||
if (system instanceof PSystemErrorV2)
|
||||
errorsV2.add((PSystemErrorV2) system);
|
||||
}
|
||||
}
|
||||
if (source == null) {
|
||||
if (source == null)
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
if (errorsV2.size() > 0) {
|
||||
|
||||
if (errorsV2.size() > 0)
|
||||
return mergeV2(errorsV2);
|
||||
}
|
||||
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
private static PSystemErrorV2 mergeV2(List<PSystemErrorV2> errorsV2) {
|
||||
PSystemErrorV2 result = null;
|
||||
for (PSystemErrorV2 err : errorsV2) {
|
||||
if (result == null || result.score() < err.score()) {
|
||||
for (PSystemErrorV2 err : errorsV2)
|
||||
if (result == null || result.score() < err.score())
|
||||
result = err;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,6 @@ import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import ext.plantuml.com.google.zxing.BarcodeFormat;
|
||||
import ext.plantuml.com.google.zxing.EncodeHintType;
|
||||
import ext.plantuml.com.google.zxing.WriterException;
|
||||
import ext.plantuml.com.google.zxing.client.j2se.MatrixToImageWriter;
|
||||
import ext.plantuml.com.google.zxing.common.BitMatrix;
|
||||
import ext.plantuml.com.google.zxing.qrcode.QRCodeWriter;
|
||||
@ -64,7 +63,7 @@ public class FlashCodeUtilsZxing implements FlashCodeUtils {
|
||||
final int multiple = 1;
|
||||
final BitMatrix bit = writer.encode(s, BarcodeFormat.QR_CODE, multiple, hints);
|
||||
return MatrixToImageWriter.toBufferedImage(bit, fore.getRGB() | 0xFF000000, back.getRGB() | 0xFF000000);
|
||||
} catch (WriterException e) {
|
||||
} catch (Exception e) {
|
||||
Log.debug("Cannot create qrcode " + e);
|
||||
} finally {
|
||||
lock.unlock();
|
||||
|
@ -49,6 +49,7 @@ import net.sourceforge.plantuml.Dimension2DDouble;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -89,8 +90,8 @@ public class FlowDiagram extends UmlDiagram implements TextBlock {
|
||||
return new DiagramDescription("Flow Diagram");
|
||||
}
|
||||
|
||||
public FlowDiagram(UmlSource source) {
|
||||
super(source, UmlDiagramType.FLOW);
|
||||
public FlowDiagram(ThemeStyle style, UmlSource source) {
|
||||
super(style, source, UmlDiagramType.FLOW);
|
||||
}
|
||||
|
||||
public void lineSimple(TileGeometry orientation, String idDest, String label) {
|
||||
@ -126,8 +127,7 @@ public class FlowDiagram extends UmlDiagram implements TextBlock {
|
||||
public ImageBuilder createImageBuilder(FileFormatOption fileFormatOption) throws IOException {
|
||||
return imageBuilder(fileFormatOption)
|
||||
.dimension(calculateDimension(fileFormatOption.getDefaultStringBounder(getSkinParam())))
|
||||
.margin(getDefaultMargins())
|
||||
.metadata(fileFormatOption.isWithMetadata() ? getMetadata() : null)
|
||||
.margin(getDefaultMargins()).metadata(fileFormatOption.isWithMetadata() ? getMetadata() : null)
|
||||
.seed(seed());
|
||||
}
|
||||
|
||||
@ -135,9 +135,7 @@ public class FlowDiagram extends UmlDiagram implements TextBlock {
|
||||
protected ImageData exportDiagramInternal(OutputStream os, int index, FileFormatOption fileFormatOption)
|
||||
throws IOException {
|
||||
|
||||
return createImageBuilder(fileFormatOption)
|
||||
.drawable(this)
|
||||
.write(os);
|
||||
return createImageBuilder(fileFormatOption).drawable(this).write(os);
|
||||
}
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
@ -156,8 +154,8 @@ public class FlowDiagram extends UmlDiagram implements TextBlock {
|
||||
final Dimension2D dimBox = box.calculateDimension(stringBounder);
|
||||
final double deltaX = SINGLE_SIZE_X * 2 - dimBox.getWidth();
|
||||
final double deltaY = SINGLE_SIZE_Y * 2 - dimBox.getHeight();
|
||||
box.drawU(ug.apply(new UTranslate((x + xmin * SINGLE_SIZE_X + deltaX / 2),
|
||||
(y + ymin * SINGLE_SIZE_Y + deltaY / 2))));
|
||||
box.drawU(ug.apply(
|
||||
new UTranslate((x + xmin * SINGLE_SIZE_X + deltaX / 2), (y + ymin * SINGLE_SIZE_Y + deltaY / 2))));
|
||||
}
|
||||
ug = ug.apply(HColorUtils.MY_RED);
|
||||
ug = ug.apply(HColorUtils.MY_RED.bg());
|
||||
|
@ -39,6 +39,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
@ -51,8 +52,8 @@ public class FlowDiagramFactory extends PSystemCommandFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public FlowDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new FlowDiagram(source);
|
||||
public FlowDiagram createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new FlowDiagram(style, source);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -85,33 +85,33 @@ public class GNode {
|
||||
}
|
||||
|
||||
public boolean canEatTheNextOne() {
|
||||
if (up.size() != 1) {
|
||||
if (up.size() != 1)
|
||||
return false;
|
||||
}
|
||||
if (down.size() != 1) {
|
||||
|
||||
if (down.size() != 1)
|
||||
return false;
|
||||
}
|
||||
|
||||
final GNode next = down.get(0);
|
||||
if (next.up.size() != 1) {
|
||||
if (next.up.size() != 1)
|
||||
return false;
|
||||
}
|
||||
if (next.down.size() != 1) {
|
||||
|
||||
if (next.down.size() != 1)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public GNode eatTheNextOne() {
|
||||
if (canEatTheNextOne() == false) {
|
||||
if (canEatTheNextOne() == false)
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
final GNode removed = down.get(0);
|
||||
final GNode newNext = removed.down.get(0);
|
||||
this.texts.addAll(removed.texts);
|
||||
this.down.set(0, newNext);
|
||||
if (newNext.up.remove(removed) == false) {
|
||||
if (newNext.up.remove(removed) == false)
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
newNext.up.add(this);
|
||||
return removed;
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ import java.util.Collection;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -57,8 +58,8 @@ public class GitDiagram extends UmlDiagram {
|
||||
|
||||
private final Collection<GNode> gnodes;
|
||||
|
||||
public GitDiagram(UmlSource source, GitTextArea textArea) {
|
||||
super(source, UmlDiagramType.GIT);
|
||||
public GitDiagram(ThemeStyle style, UmlSource source, GitTextArea textArea) {
|
||||
super(style, source, UmlDiagramType.GIT);
|
||||
this.gnodes = new GNodeBuilder(textArea.getAllCommits()).getAllNodes();
|
||||
new GNodeBuilder(textArea.getAllCommits());
|
||||
}
|
||||
@ -67,14 +68,11 @@ public class GitDiagram extends UmlDiagram {
|
||||
return new DiagramDescription("(Git)");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected ImageData exportDiagramInternal(OutputStream os, int index, FileFormatOption fileFormatOption)
|
||||
throws IOException {
|
||||
|
||||
return createImageBuilder(fileFormatOption)
|
||||
.drawable(getTextBlock())
|
||||
.write(os);
|
||||
return createImageBuilder(fileFormatOption).drawable(getTextBlock()).write(os);
|
||||
}
|
||||
|
||||
private void drawInternal(UGraphic ug) {
|
||||
|
@ -39,6 +39,7 @@ import java.util.Iterator;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.StringLocated;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemAbstractFactory;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
@ -51,19 +52,19 @@ public class GitDiagramFactory extends PSystemAbstractFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Diagram createSystem(UmlSource source, ISkinSimple skinParam) {
|
||||
public Diagram createSystem(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
final GitTextArea textArea = new GitTextArea();
|
||||
|
||||
final Iterator<StringLocated> it = source.iterator2();
|
||||
it.next();
|
||||
while (true) {
|
||||
final String line = it.next().getString();
|
||||
if (it.hasNext() == false) {
|
||||
if (it.hasNext() == false)
|
||||
break;
|
||||
}
|
||||
|
||||
textArea.add(line);
|
||||
}
|
||||
return new GitDiagram(source, textArea);
|
||||
return new GitDiagram(style, source, textArea);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -44,36 +44,39 @@ import net.sourceforge.plantuml.graphic.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.graphic.StringBounder;
|
||||
import net.sourceforge.plantuml.graphic.TextBlock;
|
||||
import net.sourceforge.plantuml.graphic.TextBlockUtils;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleSignature;
|
||||
import net.sourceforge.plantuml.ugraphic.UFont;
|
||||
import net.sourceforge.plantuml.ugraphic.UGraphic;
|
||||
import net.sourceforge.plantuml.ugraphic.URectangle;
|
||||
import net.sourceforge.plantuml.ugraphic.UStroke;
|
||||
import net.sourceforge.plantuml.ugraphic.UTranslate;
|
||||
import net.sourceforge.plantuml.ugraphic.color.HColorUtils;
|
||||
import net.sourceforge.plantuml.ugraphic.color.HColor;
|
||||
|
||||
public class MagicBox {
|
||||
|
||||
private final ISkinParam skinParam;
|
||||
private final GNode node;
|
||||
private final HColor fontColor;
|
||||
|
||||
public MagicBox(ISkinParam skinParam, GNode node) {
|
||||
this.skinParam = skinParam;
|
||||
this.node = node;
|
||||
|
||||
final Style style = StyleSignature.of(SName.root, SName.element, SName.gitDiagram)
|
||||
.getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
this.fontColor = style.value(PName.FontColor).asColor(skinParam.getThemeStyle(), skinParam.getIHtmlColorSet());
|
||||
}
|
||||
|
||||
private TextBlock getSmallBlock() {
|
||||
final FontConfiguration mono = new FontConfiguration(UFont.monospaced(15).bold(), HColorUtils.BLACK,
|
||||
HColorUtils.BLACK, false);
|
||||
|
||||
final TextBlock big = node.getDisplay().create(mono, HorizontalAlignment.CENTER, skinParam);
|
||||
return big;
|
||||
final FontConfiguration fc = new FontConfiguration(UFont.monospaced(15).bold(), fontColor, fontColor, false);
|
||||
return node.getDisplay().create(fc, HorizontalAlignment.CENTER, skinParam);
|
||||
}
|
||||
|
||||
private TextBlock getCommentBlock() {
|
||||
if (node.getComment() != null && node.isTop()) {
|
||||
final FontConfiguration tag = new FontConfiguration(UFont.sansSerif(13), HColorUtils.BLACK,
|
||||
HColorUtils.BLACK, false);
|
||||
final FontConfiguration tag = new FontConfiguration(UFont.sansSerif(13), fontColor, fontColor, false);
|
||||
return Display.create(node.getComment()).create(tag, HorizontalAlignment.CENTER, skinParam);
|
||||
}
|
||||
return TextBlockUtils.empty(0, 0);
|
||||
|
@ -59,12 +59,13 @@ import net.sourceforge.plantuml.Dimension2DDouble;
|
||||
import net.sourceforge.plantuml.ISkinParam;
|
||||
import net.sourceforge.plantuml.graphic.StringBounder;
|
||||
import net.sourceforge.plantuml.jsondiagram.Mirror;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleSignature;
|
||||
import net.sourceforge.plantuml.ugraphic.UGraphic;
|
||||
import net.sourceforge.plantuml.ugraphic.UTranslate;
|
||||
import net.sourceforge.plantuml.ugraphic.color.HColorUtils;
|
||||
import net.sourceforge.plantuml.ugraphic.color.HColor;
|
||||
import smetana.core.CString;
|
||||
import smetana.core.Macro;
|
||||
import smetana.core.Z;
|
||||
@ -92,6 +93,10 @@ public class SmetanaForGit {
|
||||
.getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
}
|
||||
|
||||
private HColor arrowColor() {
|
||||
return getStyle().value(PName.LineColor).asColor(skinParam.getThemeStyle(), skinParam.getIHtmlColorSet());
|
||||
}
|
||||
|
||||
public void drawMe(Collection<GNode> gnodes) {
|
||||
initGraph(gnodes);
|
||||
|
||||
@ -101,12 +106,11 @@ public class SmetanaForGit {
|
||||
|
||||
final MagicBox magicBox = new MagicBox(skinParam, ent.getKey());
|
||||
magicBox.drawBorder(ug.apply(pos), getSize(node));
|
||||
|
||||
}
|
||||
|
||||
for (ST_Agedge_s edge : edges) {
|
||||
final ST_Agedgeinfo_t data = (ST_Agedgeinfo_t) Macro.AGDATA(edge);
|
||||
new GitCurve(data, yMirror).drawCurve(HColorUtils.BLACK, ug);
|
||||
new GitCurve(data, yMirror).drawCurve(arrowColor(), ug);
|
||||
}
|
||||
}
|
||||
|
||||
@ -127,9 +131,9 @@ public class SmetanaForGit {
|
||||
}
|
||||
|
||||
private void initGraph(Collection<GNode> gnodes) {
|
||||
if (g != null) {
|
||||
if (g != null)
|
||||
return;
|
||||
}
|
||||
|
||||
Z.open();
|
||||
try {
|
||||
g = agopen(new CString("g"), Z.z().Agdirected, null);
|
||||
@ -142,9 +146,9 @@ public class SmetanaForGit {
|
||||
for (GNode gnode : nodes.keySet()) {
|
||||
for (GNode parent : gnode.getDowns()) {
|
||||
final ST_Agedge_s edge = createEdge(gnode, parent);
|
||||
if (edge != null) {
|
||||
if (edge != null)
|
||||
edges.add(edge);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.graphic;
|
||||
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.regex.Matcher2;
|
||||
import net.sourceforge.plantuml.command.regex.MyPattern;
|
||||
import net.sourceforge.plantuml.command.regex.Pattern2;
|
||||
|
@ -35,7 +35,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.graphic;
|
||||
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.regex.Matcher2;
|
||||
import net.sourceforge.plantuml.command.regex.MyPattern;
|
||||
import net.sourceforge.plantuml.command.regex.Pattern2;
|
||||
|
@ -81,7 +81,7 @@ public class FontConfiguration {
|
||||
}
|
||||
|
||||
public static FontConfiguration blackBlueTrue(UFont font) {
|
||||
return new FontConfiguration(font, HColorUtils.BLACK, HColorUtils.BLUE, true, 8);
|
||||
return new FontConfiguration(font, HColorUtils.BLACK.withDark(HColorUtils.WHITE), HColorUtils.BLUE, true, 8);
|
||||
}
|
||||
|
||||
public FontConfiguration(ISkinParam skinParam, FontParam fontParam, Stereotype stereo) {
|
||||
|
@ -37,10 +37,10 @@ package net.sourceforge.plantuml.graphic;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.Url;
|
||||
import net.sourceforge.plantuml.UrlBuilder;
|
||||
import net.sourceforge.plantuml.UrlBuilder.ModeUrl;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.regex.MyPattern;
|
||||
import net.sourceforge.plantuml.command.regex.Pattern2;
|
||||
|
||||
|
@ -42,8 +42,8 @@ import java.util.Objects;
|
||||
|
||||
import net.sourceforge.plantuml.ColorParam;
|
||||
import net.sourceforge.plantuml.ISkinParam;
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.UseStyle;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.skin.rose.Rose;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
|
@ -42,7 +42,7 @@ import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.StringUtils;
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.regex.Matcher2;
|
||||
import net.sourceforge.plantuml.command.regex.MyPattern;
|
||||
import net.sourceforge.plantuml.command.regex.Pattern2;
|
||||
|
@ -122,13 +122,13 @@ class USymbolRectangle extends USymbol {
|
||||
stereotype.drawU(ug.apply(new UTranslate(posStereoX, posStereoY)));
|
||||
final Dimension2D dimTitle = title.calculateDimension(ug.getStringBounder());
|
||||
final double posTitle;
|
||||
if (labelAlignment == HorizontalAlignment.LEFT) {
|
||||
if (labelAlignment == HorizontalAlignment.LEFT)
|
||||
posTitle = 3;
|
||||
} else if (labelAlignment == HorizontalAlignment.RIGHT) {
|
||||
else if (labelAlignment == HorizontalAlignment.RIGHT)
|
||||
posTitle = width - dimTitle.getWidth() - 3;
|
||||
} else {
|
||||
else
|
||||
posTitle = (width - dimTitle.getWidth()) / 2;
|
||||
}
|
||||
|
||||
title.drawU(ug.apply(new UTranslate(posTitle, 2 + dimStereo.getHeight())));
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.graphic.color;
|
||||
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.regex.RegexLeaf;
|
||||
import net.sourceforge.plantuml.command.regex.RegexResult;
|
||||
import net.sourceforge.plantuml.ugraphic.color.HColorSet;
|
||||
|
@ -45,8 +45,8 @@ import net.sourceforge.plantuml.FontParam;
|
||||
import net.sourceforge.plantuml.ISkinParam;
|
||||
import net.sourceforge.plantuml.SkinParamColors;
|
||||
import net.sourceforge.plantuml.StringUtils;
|
||||
import net.sourceforge.plantuml.ThemeStyle;
|
||||
import net.sourceforge.plantuml.UseStyle;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.cucadiagram.LinkStyle;
|
||||
import net.sourceforge.plantuml.cucadiagram.Stereotype;
|
||||
import net.sourceforge.plantuml.ugraphic.UGraphic;
|
||||
|
@ -41,6 +41,7 @@ import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemAbstractFactory;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
@ -56,7 +57,7 @@ public class HclDiagramFactory extends PSystemAbstractFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Diagram createSystem(UmlSource source, ISkinSimple skinParam) {
|
||||
public Diagram createSystem(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
final List<String> highlighted = new ArrayList<>();
|
||||
JsonValue data = null;
|
||||
StyleExtractor styleExtractor = null;
|
||||
@ -77,7 +78,7 @@ public class HclDiagramFactory extends PSystemAbstractFactory {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
final JsonDiagram result = new JsonDiagram(source, UmlDiagramType.HCL, data, highlighted);
|
||||
final JsonDiagram result = new JsonDiagram(style, source, UmlDiagramType.HCL, data, highlighted);
|
||||
// if (styleExtractor != null) {
|
||||
// styleExtractor.applyStyles(result.getSkinParam());
|
||||
// final String title = styleExtractor.getTitle();
|
||||
|
@ -43,6 +43,7 @@ import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.LineBreakStrategy;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -65,14 +66,13 @@ public class Help extends UmlDiagram {
|
||||
return new DiagramDescription("(Help)");
|
||||
}
|
||||
|
||||
public Help(UmlSource source) {
|
||||
super(source, UmlDiagramType.HELP);
|
||||
public Help(ThemeStyle style, UmlSource source) {
|
||||
super(style, source, UmlDiagramType.HELP);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageBuilder createImageBuilder(FileFormatOption fileFormatOption) throws IOException {
|
||||
return super.createImageBuilder(fileFormatOption)
|
||||
.annotations(false);
|
||||
return super.createImageBuilder(fileFormatOption).annotations(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -84,9 +84,7 @@ public class Help extends UmlDiagram {
|
||||
final Sheet sheet = Parser.build(fontConfiguration, HorizontalAlignment.LEFT, getSkinParam(), CreoleMode.FULL)
|
||||
.createSheet(display);
|
||||
final SheetBlock1 sheetBlock = new SheetBlock1(sheet, LineBreakStrategy.NONE, 0);
|
||||
return createImageBuilder(fileFormat)
|
||||
.drawable(sheetBlock)
|
||||
.write(os);
|
||||
return createImageBuilder(fileFormat).drawable(sheetBlock).write(os);
|
||||
}
|
||||
|
||||
public void add(CharSequence line) {
|
||||
|
@ -39,6 +39,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -46,8 +47,8 @@ import net.sourceforge.plantuml.core.UmlSource;
|
||||
public class HelpFactory extends PSystemCommandFactory {
|
||||
|
||||
@Override
|
||||
public Help createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new Help(source);
|
||||
public Help createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new Help(style, source);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -42,13 +42,13 @@ import java.util.Properties;
|
||||
import net.sourceforge.plantuml.BackSlash;
|
||||
import net.sourceforge.plantuml.Log;
|
||||
import net.sourceforge.plantuml.StringUtils;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemBasicFactory;
|
||||
import net.sourceforge.plantuml.command.regex.Matcher2;
|
||||
import net.sourceforge.plantuml.command.regex.MyPattern;
|
||||
import net.sourceforge.plantuml.command.regex.Pattern2;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.ditaa.PSystemDitaa;
|
||||
|
||||
public class PSystemJcckitFactory extends PSystemBasicFactory<PSystemJcckit> {
|
||||
|
||||
@ -61,7 +61,7 @@ public class PSystemJcckitFactory extends PSystemBasicFactory<PSystemJcckit> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemJcckit initDiagram(UmlSource source, String startLine) {
|
||||
public PSystemJcckit initDiagram(ThemeStyle style, UmlSource source, String startLine) {
|
||||
this.data = null;
|
||||
this.width = 640;
|
||||
this.height = 400;
|
||||
@ -106,7 +106,7 @@ public class PSystemJcckitFactory extends PSystemBasicFactory<PSystemJcckit> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemJcckit executeLine(UmlSource source, PSystemJcckit system, String line) {
|
||||
public PSystemJcckit executeLine(ThemeStyle style, UmlSource source, PSystemJcckit system, String line) {
|
||||
if (system == null && line.startsWith("jcckit")) {
|
||||
data = new StringBuilder();
|
||||
extractDimension(line);
|
||||
|
@ -43,6 +43,7 @@ import java.util.List;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.TitledDiagram;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -66,8 +67,9 @@ public class JsonDiagram extends TitledDiagram {
|
||||
private final JsonValue root;
|
||||
private final List<String> highlighted;
|
||||
|
||||
public JsonDiagram(UmlSource source, UmlDiagramType type, JsonValue json, List<String> highlighted) {
|
||||
super(source, type);
|
||||
public JsonDiagram(ThemeStyle style, UmlSource source, UmlDiagramType type, JsonValue json,
|
||||
List<String> highlighted) {
|
||||
super(style, source, type);
|
||||
if (json != null && (json.isString() || json.isBoolean() || json.isNumber())) {
|
||||
this.root = new JsonArray();
|
||||
((JsonArray) this.root).add(json);
|
||||
|
@ -42,6 +42,7 @@ import java.util.List;
|
||||
import net.sourceforge.plantuml.BackSlash;
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemAbstractFactory;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
@ -57,7 +58,7 @@ public class JsonDiagramFactory extends PSystemAbstractFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Diagram createSystem(UmlSource source, ISkinSimple skinParam) {
|
||||
public Diagram createSystem(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
final List<String> highlighted = new ArrayList<>();
|
||||
StyleExtractor styleExtractor = null;
|
||||
JsonValue json;
|
||||
@ -68,9 +69,9 @@ public class JsonDiagramFactory extends PSystemAbstractFactory {
|
||||
it.next();
|
||||
while (true) {
|
||||
final String line = it.next();
|
||||
if (it.hasNext() == false) {
|
||||
if (it.hasNext() == false)
|
||||
break;
|
||||
}
|
||||
|
||||
if (line.startsWith("#")) {
|
||||
if (line.startsWith("#highlight ")) {
|
||||
highlighted.add(line.substring("#highlight ".length()).trim());
|
||||
@ -85,10 +86,10 @@ public class JsonDiagramFactory extends PSystemAbstractFactory {
|
||||
} catch (ParseException e) {
|
||||
json = null;
|
||||
}
|
||||
final JsonDiagram result = new JsonDiagram(source, UmlDiagramType.JSON, json, highlighted);
|
||||
if (styleExtractor != null) {
|
||||
final JsonDiagram result = new JsonDiagram(style, source, UmlDiagramType.JSON, json, highlighted);
|
||||
if (styleExtractor != null)
|
||||
styleExtractor.applyStyles(result.getSkinParam());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -35,19 +35,19 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.logo;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemBasicFactory;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
|
||||
|
||||
public class PSystemLogoFactory extends PSystemBasicFactory<PSystemLogo> {
|
||||
|
||||
@Override
|
||||
public PSystemLogo initDiagram(UmlSource source, String startLine) {
|
||||
public PSystemLogo initDiagram(ThemeStyle style, UmlSource source, String startLine) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemLogo executeLine(UmlSource source, PSystemLogo system, String line) {
|
||||
public PSystemLogo executeLine(ThemeStyle style, UmlSource source, PSystemLogo system, String line) {
|
||||
if (system == null && line.equalsIgnoreCase("logo")) {
|
||||
return new PSystemLogo(source);
|
||||
}
|
||||
|
@ -35,6 +35,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.math;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemBasicFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -46,16 +47,15 @@ public class PSystemLatexFactory extends PSystemBasicFactory<PSystemLatex> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemLatex initDiagram(UmlSource source, String startLine) {
|
||||
if (getDiagramType() == DiagramType.LATEX) {
|
||||
public PSystemLatex initDiagram(ThemeStyle style, UmlSource source, String startLine) {
|
||||
if (getDiagramType() == DiagramType.LATEX)
|
||||
return new PSystemLatex(source);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemLatex executeLine(UmlSource source, PSystemLatex system, String line) {
|
||||
public PSystemLatex executeLine(ThemeStyle style, UmlSource source, PSystemLatex system, String line) {
|
||||
system.doCommandLine(line);
|
||||
return system;
|
||||
}
|
||||
|
@ -35,6 +35,7 @@
|
||||
*/
|
||||
package net.sourceforge.plantuml.math;
|
||||
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.PSystemBasicFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -46,16 +47,15 @@ public class PSystemMathFactory extends PSystemBasicFactory<PSystemMath> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemMath initDiagram(UmlSource source, String startLine) {
|
||||
if (getDiagramType() == DiagramType.MATH) {
|
||||
public PSystemMath initDiagram(ThemeStyle style, UmlSource source, String startLine) {
|
||||
if (getDiagramType() == DiagramType.MATH)
|
||||
return new PSystemMath(source);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PSystemMath executeLine(UmlSource source, PSystemMath system, String line) {
|
||||
public PSystemMath executeLine(ThemeStyle style, UmlSource source, PSystemMath system, String line) {
|
||||
system.doCommandLine(line);
|
||||
return system;
|
||||
}
|
||||
|
@ -47,6 +47,7 @@ import net.sourceforge.plantuml.Direction;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
@ -74,8 +75,8 @@ public class MindMapDiagram extends UmlDiagram {
|
||||
return new DiagramDescription("MindMap");
|
||||
}
|
||||
|
||||
public MindMapDiagram(UmlSource source) {
|
||||
super(source, UmlDiagramType.MINDMAP);
|
||||
public MindMapDiagram(ThemeStyle style, UmlSource source) {
|
||||
super(style, source, UmlDiagramType.MINDMAP);
|
||||
this.mindmaps.add(new MindMap(getSkinParam()));
|
||||
}
|
||||
|
||||
|
@ -39,6 +39,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.command.CommonCommands;
|
||||
@ -67,8 +68,8 @@ public class MindMapDiagramFactory extends PSystemCommandFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MindMapDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new MindMapDiagram(source);
|
||||
public MindMapDiagram createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new MindMapDiagram(style, source);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -50,6 +50,7 @@ import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.SpriteContainerEmpty;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
@ -96,8 +97,8 @@ public class NwDiagram extends UmlDiagram {
|
||||
return new DiagramDescription("(Nwdiag)");
|
||||
}
|
||||
|
||||
public NwDiagram(UmlSource source) {
|
||||
super(source, UmlDiagramType.NWDIAG);
|
||||
public NwDiagram(ThemeStyle style, UmlSource source) {
|
||||
super(style, source, UmlDiagramType.NWDIAG);
|
||||
}
|
||||
|
||||
public void init() {
|
||||
|
@ -39,10 +39,11 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.command.Command;
|
||||
import net.sourceforge.plantuml.command.CommandFootboxIgnored;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.command.CommonCommands;
|
||||
import net.sourceforge.plantuml.command.PSystemCommandFactory;
|
||||
import net.sourceforge.plantuml.core.DiagramType;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
|
||||
@ -53,8 +54,8 @@ public class NwDiagramFactory extends PSystemCommandFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public NwDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) {
|
||||
return new NwDiagram(source);
|
||||
public NwDiagram createEmptyDiagram(ThemeStyle style, UmlSource source, ISkinSimple skinParam) {
|
||||
return new NwDiagram(style, source);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -40,6 +40,7 @@ import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.ISkinSimple;
|
||||
import net.sourceforge.plantuml.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.api.ThemeStyle;
|
||||
import net.sourceforge.plantuml.classdiagram.AbstractEntityDiagram;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
@ -59,8 +60,8 @@ import net.sourceforge.plantuml.utils.UniqueSequence;
|
||||
|
||||
public abstract class AbstractClassOrObjectDiagram extends AbstractEntityDiagram {
|
||||
|
||||
public AbstractClassOrObjectDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
super(source, type, orig);
|
||||
public AbstractClassOrObjectDiagram(ThemeStyle style, UmlSource source, UmlDiagramType type, ISkinSimple orig) {
|
||||
super(style, source, type, orig);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user