Ignore:
Timestamp:
2013-03-03T23:15:59+01:00 (12 years ago)
Author:
malcolmh
Message:

save

Location:
applications/editors/josm/plugins/smed2/src/seamap
Files:
1 deleted
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed2/src/seamap/Lights.java

    r29286 r29340  
    1010package seamap;
    1111
    12 public class LightRender {
     12public class Lights {
    1313
    1414/*
  • applications/editors/josm/plugins/smed2/src/seamap/Rules.java

    r29287 r29340  
    1515import java.util.ArrayList;
    1616
     17import s57.S57val;
    1718import s57.S57val.*;
    1819import s57.S57att.*;
     
    466467*/
    467468        }
     469
    468470        private static void notices(Feature feature) {
    469471                if (zoom >= 14) {
     472                        double dx = 0.0, dy = 0.0;
     473                        switch (feature.type) {
     474                        case BCNCAR:
     475                        case BCNISD:
     476                        case BCNLAT:
     477                        case BCNSAW:
     478                        case BCNSPP:
     479                        case BCNWTW:
     480                                dy = 45.0;
     481                                break;
     482                        case NOTMRK:
     483                                dy = 0.0;
     484                                break;
     485                        default:
     486                                return;
     487                        }
     488                        Symbol s1 = null, s2 = null;
     489                        MarSYS sys = MarSYS.SYS_CEVN;
     490                        AttItem att = feature.atts.get(Att.MARSYS);
     491                        if (att != null) sys = (MarSYS)att.val;
     492                        ObjTab objs = feature.objs.get(Obj.NOTMRK);
     493                        int n = objs.size();
     494                        if (n > 2) {
     495                                s1 = Notices.Notice;
     496                                n = 1;
     497                        } else {
     498                                for (AttMap atts : objs.values()) {
     499                                        if (atts.get(Att.MARSYS) != null) sys = (MarSYS)atts.get(Att.MARSYS).val;
     500                                        CatNMK cat = CatNMK.NMK_UNKN;
     501                                        if (atts.get(Att.CATNMK) != null) cat = (CatNMK)atts.get(Att.CATNMK).val;
     502                                        s2 = Notices.getNotice(cat, sys);
     503                                }
     504                        }
     505/*      Obj_t *obj = getObj(item, NOTMRK, i);
     506      if (obj == NULL) continue;
     507      Atta_t add;
     508      int idx = 0;
     509      while ((add = getAttEnum(obj, ADDMRK, idx++)) != MRK_UNKN) {
     510        if ((add == MRK_LTRI) && (i == 2)) swap = true;
     511        if ((add == MRK_RTRI) && (i != 2)) swap = true;
     512      }
     513    }
     514  } else {
     515       
     516  }
     517  for (int i = 0; i <=2; i++) {
     518    Obj_t *obj = getObj(item, NOTMRK, i);
     519    if (obj == NULL) continue;
     520    Atta_t category = getAttEnum(obj, CATNMK, i);
     521    Atta_t add;
     522    int idx = 0;
     523    int top=0, bottom=0, left=0, right=0;
     524    while ((add = getAttEnum(obj, ADDMRK, idx++)) != MRK_UNKN) {
     525      switch (add) {
     526        case MRK_TOPB:
     527          top = add;
     528          break;
     529        case MRK_BOTB:
     530        case MRK_BTRI:
     531          bottom = add;
     532          break;
     533        case MRK_LTRI:
     534          left = add;
     535          break;
     536        case MRK_RTRI:
     537          right = add;
     538          break;
     539        default:
     540          break;
     541      }
     542    }
     543    double orient = getAtt(obj, ORIENT) != NULL ? getAtt(obj, ORIENT)->val.val.f : 0.0;
     544    int system = getAtt(obj, MARSYS) != NULL ? getAtt(obj, MARSYS)->val.val.e : 0;
     545    double flip = 0.0;
     546    char *symb = "";
     547    char *base = "";
     548    char *colour = "black";
     549    if ((system == SYS_BWR2) || (system == SYS_BNWR)) {
     550      symb = bniwr_map[category];
     551      switch (category) {
     552        case NMK_NANK:
     553        case NMK_LMHR:
     554        case NMK_KTPM...NMK_RSPD:
     555        {
     556          int bank = getAtt(obj, BNKWTW) != NULL ? getAtt(obj, BNKWTW)->val.val.e : 0;
     557          switch (bank) {
     558            case BWW_LEFT:
     559              base = "notice_blb";
     560              colour = "red";
     561              break;
     562            case BWW_RGHT:
     563              base = "notice_brb";
     564              colour = "green";
     565              break;
     566            default:
     567              base = "notice_bsi";
     568              colour = "black";
     569              break;
     570          }
     571        }
     572        default:
     573          break;
     574      }
     575    } else if (system == SYS_PPWB) {
     576      int bank = getAtt(obj, BNKWTW) != NULL ? getAtt(obj, BNKWTW)->val.val.e : 0;
     577      if (bank != 0) {
     578        switch (category) {
     579          case NMK_WLAR:
     580            if (bank == BNK_LEFT)
     581              base = "notice_pwlarl";
     582            else
     583              base = "notice_pwlarr";
     584            break;
     585          case NMK_WRAL:
     586            if (bank == BNK_LEFT)
     587              base = "notice_pwrall";
     588            else
     589              base = "notice_pwralr";
     590            break;
     591          case NMK_KTPM:
     592            if (bank == BNK_LEFT)
     593              base = "notice_ppml";
     594            else
     595              base = "notice_ppmr";
     596            break;
     597          case NMK_KTSM:
     598            if (bank == BNK_LEFT)
     599              base = "notice_psml";
     600            else
     601              base = "notice_psmr";
     602            break;
     603          case NMK_KTMR:
     604            if (bank == BNK_LEFT)
     605              base = "notice_pmrl";
     606            else
     607              base = "notice_pmrr";
     608            break;
     609          case NMK_CRTP:
     610          if (bank == BNK_LEFT)
     611              base = "notice_pcpl";
     612            else
     613              base = "notice_pcpr";
     614            break;
     615          case NMK_CRTS:
     616            if (bank == BNK_LEFT)
     617              base = "notice_pcsl";
     618            else
     619              base = "notice_pcsr";
     620            break;
     621          default:
     622            break;
     623        }
     624      }
     625    } else {
     626      symb = notice_map[category];
     627      switch (category) {
     628        case NMK_NOVK...NMK_NWSH:
     629        case NMK_NMTC...NMK_NLBG:
     630          base = "notice_a";
     631          break;
     632        case NMK_MVTL...NMK_CHDR:
     633          base = "notice_b";
     634          break;
     635        case NMK_PRTL...NMK_PRTR:
     636        case NMK_OVHC...NMK_LBGP:
     637          base = "notice_e";
     638          colour = "white";
     639          break;
     640        default:
     641          break;
     642      }
     643      switch (category) {
     644        case NMK_MVTL:
     645        case NMK_ANKP:
     646        case NMK_PRTL:
     647        case NMK_MWAL:
     648        case NMK_MWAR:
     649          flip = 180.0;
     650          break;
     651        case NMK_SWWR:
     652        case NMK_WRSL:
     653        case NMK_WARL:
     654          flip = -90.0;
     655          break;
     656        case NMK_SWWC:
     657        case NMK_SWWL:
     658        case NMK_WLSR:
     659        case NMK_WALR:
     660          flip = 90.0;
     661          break;
     662        default:
     663          break;
     664      }
     665    }
     666    if (n == 2) {
     667      dx = (((i != 2) && swap) || ((i == 2) && !swap)) ? -30.0 : 30.0;
     668    }
     669    if (top == MRK_TOPB)
     670      renderSymbol(item, NOTMRK, "notice_board", "", "", BC, dx, dy, orient);
     671    if (bottom == MRK_BOTB)
     672      renderSymbol(item, NOTMRK, "notice_board", "", "", BC, dx, dy, orient+180);
     673    if (bottom == MRK_BTRI)
     674      renderSymbol(item, NOTMRK, "notice_triangle", "", "", BC, dx, dy, orient+180);
     675    if (left == MRK_LTRI)
     676      renderSymbol(item, NOTMRK, "notice_triangle", "", "", BC, dx, dy, orient-90);
     677    if (right == MRK_RTRI)
     678      renderSymbol(item, NOTMRK, "notice_triangle", "", "", BC, dx, dy, orient+90);
     679    renderSymbol(item, NOTMRK, base, "", "", CC, dx, dy, orient);
     680    renderSymbol(item, NOTMRK, symb, "", colour, CC, dx, dy, orient+flip);
     681  }
     682*/
    470683                }
    471684        }
Note: See TracChangeset for help on using the changeset viewer.