Ignore:
Timestamp:
2014-01-07T22:28:02+01:00 (11 years ago)
Author:
malcolmh
Message:

save

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed2/src/s57/S57dat.java

    r30188 r30190  
    165165        }
    166166
    167         public static Object getSubf(S57subf subf) {
     167        private static S57conv findSubf(S57subf subf) {
    168168                ArrayList<S57subf> subs = fields.get(field);
    169169                boolean wrap = false;
     
    181181                        S57conv conv = convs.get(sub);
    182182                        if (sub == subf) {
    183                                 if (conv.bin == 0) {
    184                                         String str = "";
    185                                         if (conv.asc == 0) {
    186                                                 while (buffer[offset] != 0x1f) {
    187                                                         str += buffer[offset++];
    188                                                 }
    189                                         } else {
    190                                                 str = new String(buffer, offset, conv.asc);
    191                                                 offset += conv.asc;
    192                                         }
    193                                         return str;
    194                                 } else {
    195                                         int f = Math.abs(conv.bin);
    196                                         if (f < 8) {
    197                                                 long val = buffer[offset + --f];
    198                                                 if (conv.bin > 0)
    199                                                         val &= 0xff;
    200                                                 while (f > 0) {
    201                                                         val = (val << 8) + (buffer[offset + --f] & 0xff);
    202                                                 }
    203                                                 offset += Math.abs(conv.bin);
    204                                                 return val;
    205                                         } else {
    206                                                 f /= 8;
    207                                                 long val = 0;
    208                                                 for (int i = 0; i < f; i++) {
    209                                                         val = (val << 8) + (buffer[offset++] & 0xff);
    210                                                 }
    211                                                 return val;
    212                                         }
    213                                 }
     183                                return conv;
    214184                        } else {
    215185                                offset += (conv.bin != 0) ? ((conv.bin < 8) ? Math.abs(conv.bin) : conv.bin / 8) : conv.asc;
     
    217187                }
    218188        }
    219 
     189       
     190        public static Object getSubf(S57subf subf) {
     191                S57conv conv = findSubf(subf);
     192                if (conv.bin == 0) {
     193                        String str = "";
     194                        if (conv.asc == 0) {
     195                                while (buffer[offset] != 0x1f) {
     196                                        str += buffer[offset++];
     197                                }
     198                        } else {
     199                                str = new String(buffer, offset, conv.asc);
     200                                offset += conv.asc;
     201                        }
     202                        return str;
     203                } else {
     204                        int f = Math.abs(conv.bin);
     205                        if (f < 8) {
     206                                long val = buffer[offset + --f];
     207                                if (conv.bin > 0)
     208                                        val &= 0xff;
     209                                while (f > 0) {
     210                                        val = (val << 8) + (buffer[offset + --f] & 0xff);
     211                                }
     212                                offset += Math.abs(conv.bin);
     213                                return val;
     214                        } else {
     215                                f /= 8;
     216                                long val = 0;
     217                                for (int i = 0; i < f; i++) {
     218                                        val = (val << 8) + (buffer[offset++] & 0xff);
     219                                }
     220                                return val;
     221                        }
     222                }
     223        }
     224
     225        public static void putSubf(byte[] buf, int off, S57field fld, S57subf subf, Object val) {
     226                buffer = buf;
     227                offset = off;
     228                index = 0;
     229                putSubf(fld, subf, val);
     230        }
     231       
     232        public static void putSubf(S57field fld, S57subf subf, Object val) {
     233                field = fld;
     234                index = 0;
     235                putSubf(subf, val);
     236        }
     237
     238        public static void putSubf(S57subf subf, Object val) {
     239                S57conv conv = findSubf(subf);
     240                if (conv.bin == 0) {
     241                } else {
     242                }
     243        }
    220244}
Note: See TracChangeset for help on using the changeset viewer.