Hi,

Thanks for the workaround but anyway I think it shouldn't ignore
SubType. Attached is small patch that make it use SubType whenever
it's specified. It's still a bit confusing as it's not obvious what
Type=0x101 without Subtype means, but it's better than throwing away
Subtype completely.

On Mon, Sep 17, 2012 at 9:07 PM, aighes <[email protected]> wrote:
> Am 17.09.2012 20:55, schrieb Jiri Klement:
>> Hi,
>>
>> I have TYP file created using editor on ati.land.cz that contains
>> lines with Type=0x100. It works fine on my GpsMap 62s. Now I've tried
>> to use built in TYP compiler in mkgmap, but it converts Type to 0x01.
> Hi, you'll have to specify sub-id's like 0x10000, 0x10001, ... 0x10100,....
>
> Henning
>
> _______________________________________________
> mkgmap-dev mailing list
> [email protected]
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
Index: src/uk/me/parabola/imgfmt/app/typ/TypElement.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/typ/TypElement.java   (revision 2337)
+++ src/uk/me/parabola/imgfmt/app/typ/TypElement.java   (working copy)
@@ -31,7 +31,7 @@
  */
 public abstract class TypElement {
        private int type;
-       private int subType;
+       private int subType = -1;
 
        protected final List<TypLabel> labels = new ArrayList<TypLabel>();
 
@@ -59,7 +59,21 @@
         * Get the type in the format required for writing in the typ file 
sections.
         */
        public int getTypeForFile() {
-               return (type << 5) | (subType & 0x1f);
+               int type2;
+               int subType2;
+               if (subType == -1) {
+                       if (type >= 0x100) {
+                               type2 = type >>> 8;
+                               subType2 = type & 0xff;
+                       } else {
+                               type2 = type;
+                               subType2 = 0;
+                       }
+               } else {
+                       type2 = type;
+                       subType2 = subType;
+               }
+               return (type2 << 5) | (subType2 & 0x1f);
        }
 
        public void addLabel(String text) {
Index: src/uk/me/parabola/mkgmap/typ/CommonSection.java
===================================================================
--- src/uk/me/parabola/mkgmap/typ/CommonSection.java    (revision 2337)
+++ src/uk/me/parabola/mkgmap/typ/CommonSection.java    (working copy)
@@ -47,27 +47,20 @@
        /**
         * Deal with all the keys that are common to the different element 
types.
         * Most tags are in fact the same for every element.
-        * 
+        *
         * @return True if this routine has processed the tag.
         */
        protected boolean commonKey(TokenScanner scanner, TypElement current, 
String name, String value) {
                if (name.equalsIgnoreCase("Type")) {
                        try {
-                               int ival = Integer.decode(value);
-                               if (ival >= 0x100) {
-                                       current.setType(ival >>> 8);
-                                       current.setSubType(ival & 0xff);
-                               } else {
-                                       current.setType(ival & 0xff);
-                               }
+                               current.setType(Integer.decode(value));
                        } catch (NumberFormatException e) {
                                throw new SyntaxException(scanner, "Bad number 
" + value);
                        }
 
                } else if (name.equalsIgnoreCase("SubType")) {
                        try {
-                               int ival = Integer.decode(value);
-                               current.setSubType(ival);
+                               current.setSubType(Integer.decode(value));
                        } catch (NumberFormatException e) {
                                throw new SyntaxException(scanner, "Bad number 
for sub type " + value);
                        }
@@ -351,6 +344,7 @@
                         *
                         * @param alpha A true alpha value ie 0 is transparent, 
255 opaque.
                         */
+                       @Override
                        public void addAlpha(int alpha) {
                                image[lastColourIndex] = 
(image[lastColourIndex] & ~0xff) | (alpha & 0xff);
                        }
_______________________________________________
mkgmap-dev mailing list
[email protected]
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev

Reply via email to