private PixMap GetDummyXPixMap(BitmapColorMode bcm, bool b4Day, PixMap old) { if (old != null) { if (old.Colormode != bcm) { switch (old.Colormode) { case BitmapColorMode.POLY1TR: old.ChangeColorMode(BitmapColorMode.POLY2); old.InvertBits(); old.SetNewColors(new Color[] { old.GetColor(0), Color.White }); // 2. Farbe einfach Weiß break; case BitmapColorMode.POLY2: old.ChangeColorMode(BitmapColorMode.POLY1TR); old.InvertBits(); old.SetNewColors(new Color[] { old.GetColor(0) }); break; } } return(old); } PixMap pic = new PixMap(32, 32, 2, bcm); if (b4Day) { pic.SetNewColor(0, DayColor1); if (bcm == BitmapColorMode.POLY2) { pic.SetNewColor(1, DayColor2); } } else { pic.SetNewColor(0, NightColor1); if (bcm == BitmapColorMode.POLY2) { pic.SetNewColor(1, NightColor2); } } return(pic); }
public void Read(BinaryReaderWriter br) { try { Options = br.ReadByte(); // es folgen 1 bis max. 4 Farben und ev. 1 Bitmap switch (Colortype) // hier muss sicher noch überprüft werden, ob die Typen wirklich richtig interpretiert werden { case ColorType.Day1: colDayColor[0] = BinaryColor.ReadColor(br); break; case ColorType.Day1_Night1: colDayColor[0] = BinaryColor.ReadColor(br); colNightColor[0] = BinaryColor.ReadColor(br); break; case ColorType.BM_Day2: // 2 Farben + 1x Pixeldaten colDayColor = BinaryColor.ReadColorTable(br, 2); XBitmapDay = new PixMap(32, 32, colDayColor, BitmapColorMode.POLY2, br); break; case ColorType.BM_Day2_Night2: // 4 Farben + 1x Pixeldaten colDayColor = BinaryColor.ReadColorTable(br, 2); colNightColor = BinaryColor.ReadColorTable(br, 2); XBitmapDay = new PixMap(32, 32, colDayColor, BitmapColorMode.POLY2, br); XBitmapNight = new PixMap(XBitmapDay); XBitmapNight.SetNewColors(colNightColor); break; case ColorType.BM_Day1_Night2: // 3 Farben + 1x Pixeldaten colDayColor[0] = BinaryColor.ReadColor(br); colDayColor[1] = PixMap.TransparentColor; colNightColor = BinaryColor.ReadColorTable(br, 2); XBitmapDay = new PixMap(32, 32, colDayColor, BitmapColorMode.POLY2, br); XBitmapNight = new PixMap(XBitmapDay); XBitmapNight.ChangeColorMode(BitmapColorMode.POLY2); XBitmapNight.SetNewColors(colNightColor); break; case ColorType.BM_Day2_Night1: // 3 Farben + 1x Pixeldaten colDayColor = BinaryColor.ReadColorTable(br, 2); colNightColor[0] = BinaryColor.ReadColor(br); colNightColor[1] = PixMap.TransparentColor; XBitmapDay = new PixMap(32, 32, colDayColor, BitmapColorMode.POLY2, br); XBitmapNight = new PixMap(XBitmapDay); XBitmapNight.ChangeColorMode(BitmapColorMode.POLY1TR); XBitmapNight.SetNewColors(colNightColor); break; case ColorType.BM_Day1: // 1 Farbe + 1x Pixeldaten colDayColor[0] = colNightColor[0] = BinaryColor.ReadColor(br); colDayColor[1] = colNightColor[1] = PixMap.TransparentColor; XBitmapDay = new PixMap(32, 32, colDayColor, BitmapColorMode.POLY1TR, br); break; case ColorType.BM_Day1_Night1: // 2 Farben + 1x Pixeldaten colDayColor[0] = BinaryColor.ReadColor(br); colDayColor[1] = PixMap.TransparentColor; colNightColor[0] = BinaryColor.ReadColor(br); colNightColor[1] = PixMap.TransparentColor; XBitmapDay = new PixMap(32, 32, colDayColor, BitmapColorMode.POLY1TR, br); XBitmapNight = new PixMap(XBitmapDay); XBitmapNight.SetNewColors(colNightColor); break; } if (WithDayBitmap) { // sicherheitshalber nochmal die Bitmapfarben übernehmen DayColor1 = XBitmapDay.GetColor(0); if (XBitmapDay.Colors > 1) { DayColor2 = XBitmapDay.GetColor(1); } if (XBitmapNight != null) { NightColor1 = XBitmapNight.GetColor(0); if (XBitmapNight.Colors > 1) { NightColor2 = XBitmapNight.GetColor(1); } } } if (WithString) { Text = new MultiText(br); } if (WithExtendedOptions) // es folgen weitere (max. 2) Farben { ExtOptions = br.ReadByte(); switch (FontColType) { case FontColours.Day: colFontColour[0] = BinaryColor.ReadColor(br); break; case FontColours.Night: colFontColour[1] = BinaryColor.ReadColor(br); break; case FontColours.DayAndNight: colFontColour = BinaryColor.ReadColorTable(br, 2); break; } } } catch (Exception ex) { throw new Exception(string.Format("Fehler beim Lesen des Polygons 0x{0:x} 0x{1:x}: {2}", Type, Subtype, ex.Message)); } }