Ignore:
Timestamp:
2013-01-17T12:08:28+01:00 (12 years ago)
Author:
malcolmh
Message:

save

Location:
applications/editors/josm/plugins/smed2/src/symbols
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed2/src/symbols/Notices.java

    r29198 r29202  
    5151        private static final Symbol Sport = new Symbol();
    5252        static {
    53                 Sport.add(new Instr(Prim.TEXT, new Caption("SPORT", new TextStyle(new Font("Arial", Font.BOLD, 15)), (float)-25.0, (float)5.0)));
     53                Sport.add(new Instr(Prim.TEXT, new Caption("SPORT", new Font("Arial", Font.BOLD, 15), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)))));
    5454        }
    5555        private static final Symbol Turn = new Symbol();
     
    6565        private static final Symbol VHF = new Symbol();
    6666        static {
    67                 VHF.add(new Instr(Prim.TEXT, new Caption("VHF", new TextStyle(new Font("Arial", Font.BOLD, 20)), (float)-20.0, (float)-5.0)));
     67                VHF.add(new Instr(Prim.TEXT, new Caption("VHF", new Font("Arial", Font.BOLD, 20), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)))));
    6868        }
    6969        private static final Symbol Waterbike = new Symbol();
  • applications/editors/josm/plugins/smed2/src/symbols/Symbols.java

    r29199 r29202  
    1515import java.awt.Graphics2D;
    1616import java.awt.Rectangle;
     17import java.awt.font.TextLayout;
    1718import java.awt.geom.*;
    1819import java.util.ArrayList;
     
    5960                Object params;
    6061
    61                 Instr(Prim itype, Object iparams) {
     62                public Instr(Prim itype, Object iparams) {
    6263                        type = itype;
    6364                        params = iparams;
     
    8586        }
    8687
    87         public static class TextStyle {
    88                 Font font;
    89 
    90                 public TextStyle(Font ifont) {
    91                         font = ifont;
    92                 }
    93         }
    94 
    9588        public static class Caption {
    9689                String str;
    97                 TextStyle style;
    98                 float x;
    99                 float y;
    100 
    101                 public Caption(String istr, TextStyle istyle, float ix, float iy) {
     90                Font font;
     91                Delta dd;
     92
     93                public Caption(String istr, Font ifont, Delta idd) {
    10294                        str = istr;
    103                         style = istyle;
    104                         x = ix;
    105                         y = iy;
     95                        font = ifont;
     96                        dd = idd;
    10697                }
    10798        }
     
    167158                                                switch (dd.h) {
    168159                                                case CC:
    169                                                         dx = bbox.x + (bbox.width / 2.0);
    170                                                         dy = bbox.y + (bbox.height / 2.0);
     160                                                        dx -= bbox.x + (bbox.width / 2.0);
     161                                                        dy -= bbox.y + (bbox.height / 2.0);
    171162                                                        break;
    172163                                                case TL:
    173                                                         dx = bbox.x;
    174                                                         dy = bbox.y;
     164                                                        dx -= bbox.x;
     165                                                        dy -= bbox.y;
    175166                                                        break;
    176167                                                case TR:
    177                                                         dx = bbox.x + bbox.width;
    178                                                         dy = bbox.y;
     168                                                        dx -= bbox.x + bbox.width;
     169                                                        dy -= bbox.y;
    179170                                                        break;
    180171                                                case TC:
    181                                                         dx = bbox.x + (bbox.width / 2.0);
    182                                                         dy = bbox.y;
     172                                                        dx -= bbox.x + (bbox.width / 2.0);
     173                                                        dy -= bbox.y;
    183174                                                        break;
    184175                                                case LC:
    185                                                         dx = bbox.x;
    186                                                         dy = bbox.y + (bbox.height / 2.0);
     176                                                        dx -= bbox.x;
     177                                                        dy -= bbox.y + (bbox.height / 2.0);
    187178                                                        break;
    188179                                                case RC:
    189                                                         dx = bbox.x + bbox.width;
    190                                                         dy = bbox.y + (bbox.height / 2.0);
     180                                                        dx -= bbox.x + bbox.width;
     181                                                        dy -= bbox.y + (bbox.height / 2.0);
    191182                                                        break;
    192183                                                case BL:
    193                                                         dx = bbox.x;
    194                                                         dy = bbox.y + bbox.height;
     184                                                        dx -= bbox.x;
     185                                                        dy -= bbox.y + bbox.height;
    195186                                                        break;
    196187                                                case BR:
    197                                                         dx = bbox.x + bbox.width;
    198                                                         dy = bbox.y + bbox.height;
     188                                                        dx -= bbox.x + bbox.width;
     189                                                        dy -= bbox.y + bbox.height;
    199190                                                        break;
    200191                                                case BC:
    201                                                         dx = bbox.x + (bbox.width / 2.0);
    202                                                         dy = bbox.y + bbox.height;
     192                                                        dx -= bbox.x + (bbox.width / 2.0);
     193                                                        dy -= bbox.y + bbox.height;
    203194                                                        break;
    204195                                                }
    205                                                 g2.translate(-dx, -dy);
     196                                                g2.translate(dx, dy);
    206197                                        }
    207198                                        break;
     
    296287                                case TEXT:
    297288                                        Caption c = (Caption) item.params;
    298                                         g2.setFont(c.style.font);
    299                                         g2.drawString(c.str, c.x, c.y);
     289                                        TextLayout layout = new TextLayout(c.str, c.font, g2.getFontRenderContext());
     290                                        Rectangle2D bb = layout.getBounds();
     291                                        dx = 0;
     292                                        dy = 0;
     293                                        if (c.dd != null) {
     294                                                g2.transform(c.dd.t);
     295                                                switch (c.dd.h) {
     296                                                case CC:
     297                                                        dx -= bb.getX() + (bb.getWidth() / 2.0);
     298                                                        dy -= bb.getY() + (bb.getHeight() / 2.0);
     299                                                        break;
     300                                                case TL:
     301                                                        dx -= bb.getX();
     302                                                        dy -= bb.getY();
     303                                                        break;
     304                                                case TR:
     305                                                        dx -= bb.getX() + bb.getWidth();
     306                                                        dy -= bb.getY();
     307                                                        break;
     308                                                case TC:
     309                                                        dx -= bb.getX() + (bb.getWidth() / 2.0);
     310                                                        dy -= bb.getY();
     311                                                        break;
     312                                                case LC:
     313                                                        dx -= bb.getX();
     314                                                        dy -= bb.getY() + (bb.getHeight() / 2.0);
     315                                                        break;
     316                                                case RC:
     317                                                        dx -= bb.getX() + bb.getWidth();
     318                                                        dy -= bb.getY() + (bb.getHeight() / 2.0);
     319                                                        break;
     320                                                case BL:
     321                                                        dx -= bb.getX();
     322                                                        dy -= bb.getY() + bb.getHeight();
     323                                                        break;
     324                                                case BR:
     325                                                        dx -= bb.getX() + bb.getWidth();
     326                                                        dy -= bb.getY() + bb.getHeight();
     327                                                        break;
     328                                                case BC:
     329                                                        dx -= bb.getX() + (bb.getWidth() / 2.0);
     330                                                        dy -= bb.getY() + bb.getHeight();
     331                                                        break;
     332                                                }
     333                                        }
     334                                        layout.draw(g2, (float)dx, (float)dy);
    300335                                        break;
    301336                                }
Note: See TracChangeset for help on using the changeset viewer.