Difference between revisions of "Artefact:Template/org/oomodels/converter/templates/simplediagram-1.0-svg-1.1"
From OOModels
< Artefact:Template | org | oomodels | converter | templates
Jump to navigationJump to search
AndreasLeue (talk | contribs) |
AndreasLeue (talk | contribs) (→Code) |
||
(32 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
==Code== | ==Code== | ||
< | <OOMCode type="org/oogenerator/Template/2.0"> | ||
G-2.0-xml_string-1.0 -*- coding: utf-8; -*- | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
⋮▼import java.util.HashMap;▼… | |||
⋮«HashMap items_by_pos = new HashMap();»… | |||
<path style="fill:#000000;fill-opacity:0.49803922;stroke:none;stroke-width:1px;" | ⋮«∀(a:‖"Ⓧ/Diagram/Item"){»… | ||
⋮« String name = ((XMLNode)‖"Ⓧ/@Name").toString(); | |||
String type = ((XMLNode)<span class="oogpath">‖"Ⓧ/@Type"</span>).toString(); | |||
int len = name.length(); | |||
int count = 0; | |||
∀(e:‖"Ⓧ/Entry"){ | |||
String entry = ((XMLNode)‖"Ⓧ/@Text").toString(); | |||
if (entry.length() > len) { len = entry.length(); } | |||
count++; | |||
}/∀ | |||
int width = len * 10; | |||
int height = count * 24 + 44; | |||
int x = Integer.parseInt(((XMLNode)(‖"Ⓧ/@X")).toString()); | |||
int y = Integer.parseInt(((XMLNode)(‖"Ⓧ/@Y")).toString()); | |||
= | Integer[] box = { 8*x, 16*y, 8*x+width, 16*y+height }; | ||
items_by_pos.put(""+x+"-"+y+"", box); »… | |||
< | <a xlink:href="◂‖"Ⓧ/@Link"▸" target="_top"> | ||
<g transform="translate(◂8*x▸,◂16*y▸)"> | |||
⋮«if(type.equals("Class")){»… | |||
<path style="fill:#d8cae2;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;" | <path style="fill:#000000;fill-opacity:0.49803922;stroke:none;stroke-width:1px;" | ||
d="M 2,2 L ◂2+width▸,2 L ◂2+width▸,◂2+height▸ L 2,◂2+height▸ L 2,2 z "/> | |||
</ | <path style="fill:#80A0C0;fill-opacity:1;stroke:#000000;stroke-width:1px;" | ||
d="M 0,0 L ◂width▸,0 L ◂width▸,◂height▸ L 0,◂height▸ L 0,0 z "/> | |||
⋮«if(count != 0){»… | |||
<path style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;" | |||
d="M 0,44 L ◂width▸,44 "/> | |||
⋮«}»… | |||
⋮«}»… | |||
⋮«if(type.equals("StateMachine")){»… | |||
<path style="fill:#000000;fill-opacity:0.49803922;stroke:none;stroke-width:1px;" | |||
d="M 2,2 L ◂2+width▸,2 L ◂2+width▸,◂2+height▸ L 2,◂2+height▸ L 2,2 z "/> | |||
<path style="fill:#80E080;fill-opacity:1;stroke:#000000;stroke-width:1px;" | |||
d="M 0,0 L ◂width▸,0 L ◂width▸,◂height▸ L 0,◂height▸ L 0,0 z "/> | |||
⋮«if(count != 0){»… | |||
<path style="stroke:#000000;stroke-width:1px;" | |||
d="M 0,44 L ◂width▸,44 "/> | |||
⋮«}»… | |||
⋮«}»… | |||
⋮«if(type.equals("Step")){ box[2] += 11; »… | |||
<path style="fill:#000000;fill-opacity:0.49803922;stroke:none;stroke-width:1px;" | |||
d="M 2,2 L ◂2+width▸,2 L ◂13+width▸,24 L ◂2+width▸,◂2+height▸ L 2,◂2+height▸ L 2,2 z "/> | |||
<path style="fill:#e6f28b;fill-opacity:1;stroke:#000000;stroke-width:1px;" | |||
d="M 0,0 L ◂width▸,0 L ◂11+width▸,22 L ◂width▸,◂height▸ L 0,◂height▸ L 0,0 z "/> | |||
⋮«if(count != 0){»… | |||
<path style="stroke:#000000;stroke-width:1px;" | |||
d="M 0,44 L ◂width▸,44 "/> | |||
⋮«}»… | |||
⋮«}»… | |||
⋮«if(type.equals("Constellation")){ box[2] += 18; »… | |||
<path style="fill:#000000;fill-opacity:0.49803922;fill-rule:evenodd;stroke:none;stroke-width:1px;" | |||
d="M 14,2 L ◂8+width▸,2 C ◂15+width▸,2 ◂20+width▸,8 ◂20+width▸,15 L ◂20+width▸,◂height-10▸ C ◂20+width▸,◂height-3▸ ◂15+width▸,◂height+3▸ ◂8+width▸,◂height+3▸ L 14,◂height+3▸ C 7,◂height+3▸ 2,◂height-3▸ 2,◂height-10▸ L 2,15 C 2,8 7,2 14,2 z "/> | |||
<path style="fill:#d8cae2;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;" | |||
d="M 12,0 L ◂6+width▸,0 C ◂13+width▸,0 ◂18+width▸,6 ◂18+width▸,13 L ◂18+width▸,◂height-12▸ C ◂18+width▸,◂height-5▸ ◂13+width▸,◂height+1▸ ◂6+width▸,◂height+1▸ L 12,◂height+1▸ C 5,◂height+1▸ 0,◂height-5▸ 0,◂height-12▸ L 0,13 C 0,6 5,0 12,0 z "/> | |||
⋮«if(count != 0){»… | |||
<path style="stroke:#000000;stroke-width:1px;" | |||
d="M 2,44 L ◂20+width▸,44 "/> | |||
⋮«}»… | |||
⋮«}»… | |||
<text y="26" x="◂1+(width/2)▸" | |||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal; | |||
text-align:center;text-anchor:middle;fill:#000000;font-family:Sans">◂name▸</text> | |||
⋮«∀(e:‖"Ⓧ/Entry"){»… | |||
<text y="◂62+Ⓘ*24▸" x="1" | |||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal; | |||
text-align:center;text-anchor:left;fill:#000000;font-family:Sans">◂‖"Ⓧ/@Text"▸</text> | |||
⋮«}/∀»… | |||
</g> | |||
</a> | |||
⋮«}/∀»… | |||
⋮«∀(a:‖"Ⓧ/Diagram/Generalization"){»… | |||
⋮« | |||
int fromx = Integer.parseInt(((XMLNode)(‖"Ⓧ/@FromX")).toString()); | |||
int fromy = Integer.parseInt(((XMLNode)(‖"Ⓧ/@FromY")).toString()); | |||
int tox = Integer.parseInt(((XMLNode)(‖"Ⓧ/@ToX")).toString()); | |||
int toy = Integer.parseInt(((XMLNode)(‖"Ⓧ/@ToY")).toString()); | |||
Integer[] fb = (Integer[]) items_by_pos.get(""+fromx+"-"+fromy+""); | |||
Integer[] tb = (Integer[]) items_by_pos.get(""+tox+"-"+toy+""); | |||
int fx = ((fb[2]+fb[0])/2); | |||
int fy = fb[1]; | |||
int tx = ((tb[2]+tb[0])/2); | |||
int ty = tb[3]; | |||
»… | |||
<g> | |||
<path style="fill:none;stroke-opacity:1;stroke:#000000;stroke-width:1px" | |||
d="M ◂tx▸,◂ty▸ L ◂tx-10▸,◂ty+10▸ L ◂tx+10▸,◂ty+10▸ L ◂tx▸,◂ty▸ z "/> | |||
<path style="fill:none;stroke-opacity:1;stroke:#000000;stroke-width:1px" | |||
d="M ◂fx▸,◂fy▸ … | |||
⋮«if(fy-ty>40){»… | |||
⋮L ◂fx▸,◂(fy+ty+10)/2▸ L ◂tx▸,◂(fy+ty+10)/2▸ … | |||
⋮«}else{»… | |||
⋮L ◂fx▸,◂fy-20▸ L ◂(fx+tx)/2▸,◂fy-20▸ L ◂(fx+tx)/2▸,◂ty+30▸ L ◂tx▸,◂ty+30▸ … | |||
⋮«}»… | |||
⋮L ◂tx▸,◂ty+10▸ "/> | |||
</g> | |||
⋮«}/∀»… | |||
⋮«∀(a:‖"Ⓧ/Diagram/Association"){»… | |||
⋮« | |||
int fromx = Integer.parseInt(((XMLNode)(‖"Ⓧ/@FromX")).toString()); | |||
int fromy = Integer.parseInt(((XMLNode)(‖"Ⓧ/@FromY")).toString()); | |||
int tox = Integer.parseInt(((XMLNode)(‖"Ⓧ/@ToX")).toString()); | |||
int toy = Integer.parseInt(((XMLNode)(‖"Ⓧ/@ToY")).toString()); | |||
if (fromx > tox) { int temp = fromx; fromx = tox; tox = temp; temp = fromy; fromy = toy; toy = temp; } | |||
Integer[] fb = (Integer[]) items_by_pos.get(""+fromx+"-"+fromy+""); | |||
Integer[] tb = (Integer[]) items_by_pos.get(""+tox+"-"+toy+""); | |||
int fx = fb[2]; | |||
int fy = ((fb[3]+fb[1])/2); | |||
int tx = tb[0]; | |||
int ty = ((tb[3]+tb[1])/2); | |||
»… | |||
<g> | |||
<path style="fill:none;stroke-opacity:1;stroke:#000000;stroke-width:1px" | |||
d="M ◂fx▸,◂fy▸ … | |||
⋮«if(tx-fx>40){»… | |||
⋮L ◂(fx+tx)/2▸,◂fy▸ L ◂(fx+tx)/2▸,◂ty▸ … | |||
⋮«}else{»… | |||
⋮L ◂fx+20▸,◂fy▸ L ◂fx+20▸,◂(fy+ty)/2▸ L ◂fx-20▸,◂(fy+ty)/2▸ L ◂fx-20▸,◂ty▸ … | |||
⋮«}»… | |||
⋮L ◂tx▸,◂ty▸ "/> | |||
</g> | |||
⋮«}/∀»… | |||
</svg> | |||
</OOMCode> |
Latest revision as of 20:15, 18 December 2009
Classification | |
---|---|
Type | Type:org/oogenerator/Template/2.0 |
Domain | Domain:it/development/formatting |
Category | Type:org/oomodels/wiki/Template |
Maturity | final |
More | |
Download Code | |
Namespace (more) | |
OOModels main namespace | |
create new pages |
Code[edit]
G-2.0-xml_string-1.0 -*- coding: utf-8; -*- <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> ⋮▼import java.util.HashMap;▼… ⋮«HashMap items_by_pos = new HashMap();»… ⋮«∀(a:‖"Ⓧ/Diagram/Item"){»… ⋮« String name = ((XMLNode)‖"Ⓧ/@Name").toString(); String type = ((XMLNode)<span class="oogpath">‖"Ⓧ/@Type"</span>).toString(); int len = name.length(); int count = 0; ∀(e:‖"Ⓧ/Entry"){ String entry = ((XMLNode)‖"Ⓧ/@Text").toString(); if (entry.length() > len) { len = entry.length(); } count++; }/∀ int width = len * 10; int height = count * 24 + 44; int x = Integer.parseInt(((XMLNode)(‖"Ⓧ/@X")).toString()); int y = Integer.parseInt(((XMLNode)(‖"Ⓧ/@Y")).toString()); Integer[] box = { 8*x, 16*y, 8*x+width, 16*y+height }; items_by_pos.put(""+x+"-"+y+"", box); »… <a xlink:href="◂‖"Ⓧ/@Link"▸" target="_top"> <g transform="translate(◂8*x▸,◂16*y▸)"> ⋮«if(type.equals("Class")){»… <path style="fill:#000000;fill-opacity:0.49803922;stroke:none;stroke-width:1px;" d="M 2,2 L ◂2+width▸,2 L ◂2+width▸,◂2+height▸ L 2,◂2+height▸ L 2,2 z "/> <path style="fill:#80A0C0;fill-opacity:1;stroke:#000000;stroke-width:1px;" d="M 0,0 L ◂width▸,0 L ◂width▸,◂height▸ L 0,◂height▸ L 0,0 z "/> ⋮«if(count != 0){»… <path style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;" d="M 0,44 L ◂width▸,44 "/> ⋮«}»… ⋮«}»… ⋮«if(type.equals("StateMachine")){»… <path style="fill:#000000;fill-opacity:0.49803922;stroke:none;stroke-width:1px;" d="M 2,2 L ◂2+width▸,2 L ◂2+width▸,◂2+height▸ L 2,◂2+height▸ L 2,2 z "/> <path style="fill:#80E080;fill-opacity:1;stroke:#000000;stroke-width:1px;" d="M 0,0 L ◂width▸,0 L ◂width▸,◂height▸ L 0,◂height▸ L 0,0 z "/> ⋮«if(count != 0){»… <path style="stroke:#000000;stroke-width:1px;" d="M 0,44 L ◂width▸,44 "/> ⋮«}»… ⋮«}»… ⋮«if(type.equals("Step")){ box[2] += 11; »… <path style="fill:#000000;fill-opacity:0.49803922;stroke:none;stroke-width:1px;" d="M 2,2 L ◂2+width▸,2 L ◂13+width▸,24 L ◂2+width▸,◂2+height▸ L 2,◂2+height▸ L 2,2 z "/> <path style="fill:#e6f28b;fill-opacity:1;stroke:#000000;stroke-width:1px;" d="M 0,0 L ◂width▸,0 L ◂11+width▸,22 L ◂width▸,◂height▸ L 0,◂height▸ L 0,0 z "/> ⋮«if(count != 0){»… <path style="stroke:#000000;stroke-width:1px;" d="M 0,44 L ◂width▸,44 "/> ⋮«}»… ⋮«}»… ⋮«if(type.equals("Constellation")){ box[2] += 18; »… <path style="fill:#000000;fill-opacity:0.49803922;fill-rule:evenodd;stroke:none;stroke-width:1px;" d="M 14,2 L ◂8+width▸,2 C ◂15+width▸,2 ◂20+width▸,8 ◂20+width▸,15 L ◂20+width▸,◂height-10▸ C ◂20+width▸,◂height-3▸ ◂15+width▸,◂height+3▸ ◂8+width▸,◂height+3▸ L 14,◂height+3▸ C 7,◂height+3▸ 2,◂height-3▸ 2,◂height-10▸ L 2,15 C 2,8 7,2 14,2 z "/> <path style="fill:#d8cae2;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;" d="M 12,0 L ◂6+width▸,0 C ◂13+width▸,0 ◂18+width▸,6 ◂18+width▸,13 L ◂18+width▸,◂height-12▸ C ◂18+width▸,◂height-5▸ ◂13+width▸,◂height+1▸ ◂6+width▸,◂height+1▸ L 12,◂height+1▸ C 5,◂height+1▸ 0,◂height-5▸ 0,◂height-12▸ L 0,13 C 0,6 5,0 12,0 z "/> ⋮«if(count != 0){»… <path style="stroke:#000000;stroke-width:1px;" d="M 2,44 L ◂20+width▸,44 "/> ⋮«}»… ⋮«}»… <text y="26" x="◂1+(width/2)▸" style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal; text-align:center;text-anchor:middle;fill:#000000;font-family:Sans">◂name▸</text> ⋮«∀(e:‖"Ⓧ/Entry"){»… <text y="◂62+Ⓘ*24▸" x="1" style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal; text-align:center;text-anchor:left;fill:#000000;font-family:Sans">◂‖"Ⓧ/@Text"▸</text> ⋮«}/∀»… </g> </a> ⋮«}/∀»… ⋮«∀(a:‖"Ⓧ/Diagram/Generalization"){»… ⋮« int fromx = Integer.parseInt(((XMLNode)(‖"Ⓧ/@FromX")).toString()); int fromy = Integer.parseInt(((XMLNode)(‖"Ⓧ/@FromY")).toString()); int tox = Integer.parseInt(((XMLNode)(‖"Ⓧ/@ToX")).toString()); int toy = Integer.parseInt(((XMLNode)(‖"Ⓧ/@ToY")).toString()); Integer[] fb = (Integer[]) items_by_pos.get(""+fromx+"-"+fromy+""); Integer[] tb = (Integer[]) items_by_pos.get(""+tox+"-"+toy+""); int fx = ((fb[2]+fb[0])/2); int fy = fb[1]; int tx = ((tb[2]+tb[0])/2); int ty = tb[3]; »… <g> <path style="fill:none;stroke-opacity:1;stroke:#000000;stroke-width:1px" d="M ◂tx▸,◂ty▸ L ◂tx-10▸,◂ty+10▸ L ◂tx+10▸,◂ty+10▸ L ◂tx▸,◂ty▸ z "/> <path style="fill:none;stroke-opacity:1;stroke:#000000;stroke-width:1px" d="M ◂fx▸,◂fy▸ … ⋮«if(fy-ty>40){»… ⋮L ◂fx▸,◂(fy+ty+10)/2▸ L ◂tx▸,◂(fy+ty+10)/2▸ … ⋮«}else{»… ⋮L ◂fx▸,◂fy-20▸ L ◂(fx+tx)/2▸,◂fy-20▸ L ◂(fx+tx)/2▸,◂ty+30▸ L ◂tx▸,◂ty+30▸ … ⋮«}»… ⋮L ◂tx▸,◂ty+10▸ "/> </g> ⋮«}/∀»… ⋮«∀(a:‖"Ⓧ/Diagram/Association"){»… ⋮« int fromx = Integer.parseInt(((XMLNode)(‖"Ⓧ/@FromX")).toString()); int fromy = Integer.parseInt(((XMLNode)(‖"Ⓧ/@FromY")).toString()); int tox = Integer.parseInt(((XMLNode)(‖"Ⓧ/@ToX")).toString()); int toy = Integer.parseInt(((XMLNode)(‖"Ⓧ/@ToY")).toString()); if (fromx > tox) { int temp = fromx; fromx = tox; tox = temp; temp = fromy; fromy = toy; toy = temp; } Integer[] fb = (Integer[]) items_by_pos.get(""+fromx+"-"+fromy+""); Integer[] tb = (Integer[]) items_by_pos.get(""+tox+"-"+toy+""); int fx = fb[2]; int fy = ((fb[3]+fb[1])/2); int tx = tb[0]; int ty = ((tb[3]+tb[1])/2); »… <g> <path style="fill:none;stroke-opacity:1;stroke:#000000;stroke-width:1px" d="M ◂fx▸,◂fy▸ … ⋮«if(tx-fx>40){»… ⋮L ◂(fx+tx)/2▸,◂fy▸ L ◂(fx+tx)/2▸,◂ty▸ … ⋮«}else{»… ⋮L ◂fx+20▸,◂fy▸ L ◂fx+20▸,◂(fy+ty)/2▸ L ◂fx-20▸,◂(fy+ty)/2▸ L ◂fx-20▸,◂ty▸ … ⋮«}»… ⋮L ◂tx▸,◂ty▸ "/> </g> ⋮«}/∀»… </svg>