Exemplo n.º 1
0
        public void InitValues()
        {
            pictureCanvas          = new Canvas(160, 168);
            priorityCanvas         = new Canvas(160, 168);
            controlCanvas          = new Canvas(160, 168);
            pictureDoc             = new XmlDocument();
            goaDoc                 = new XmlDocument();
            prioritiesUsed         = new bool[16];
            priorityCanvases       = new Stack();
            pictureColor           = 15;
            priorityColor          = 4;
            pictureDrawingEnabled  = false;
            priorityDrawingEnabled = false;
            isGoaCommand           = false;

            for (int i = 0; i < 16; i++)
            {
                pictureCanvas.SetColor(ColorPalette[i]);
                priorityCanvas.SetColor(ColorPalette[i]);
                controlCanvas.SetColor(ColorPalette[i]);
                prioritiesUsed[i] = false;
            }

            prioritiesUsed[4] = true;

            pictureCanvas.FillBackground(15);
            priorityCanvas.FillBackground(4);
            controlCanvas.FillBackground(4);
        }
        private void renderCanvas()
        {
            XmlElement viewNode = doc.CreateElement("view");
              viewNode.SetAttribute("id", "" + id);
              doc.AppendChild(viewNode);

              if (Description != "")
              {
            XmlElement descEl = doc.CreateElement("description");
            viewNode.AppendChild(descEl);
            descEl.AppendChild(doc.CreateTextNode(Description));
              }

              canvas = new Canvas(viewWidth * zoomX, viewHeight * zoomY);
              for (int i = 0; i < colorPalette.Length; i++)
              {
            canvas.SetColor(colorPalette[i]);
              }

              int celY = 0;
              Loop loop;

              for (int loopNr = 0; loopNr < loopCount; loopNr++)
              {
            int celX = 0;

            loop = loops[loopNr];
            int celCount = loop.cels.Length;

            XmlElement loopNode = doc.CreateElement("loop");
            viewNode.AppendChild(loopNode);

            for (int celNr = 0; celNr < celCount; celNr++)
            {
              Cel cel = loop.cels[celNr];

              XmlElement celNode = doc.CreateElement("cel");
              loopNode.AppendChild(celNode);
              celNode.SetAttribute("width", "" + cel.width);
              celNode.SetAttribute("height", "" + cel.height);

              for (int y = 0; y < cel.height; y++)
              {
            for (int x = 0; x < cel.width; x++)
            {
              int colorIndex = cel.data[x, y];

              //canvas.SetPixel(celX + x, celY + y, colorIndex);
              int vX = celX + x;
              int vY = celY + y;

              // draw pixels in zoomed fashion
              for (int zY = vY * zoomY; zY < (vY + 1) * zoomY; zY++)
              {
                for (int zX = vX * zoomX; zX < (vX + 1) * zoomX; zX++)
                {
                  canvas.SetPixel(zX, zY, colorIndex);
                }
              }
            }
              }
              celX += cel.width;
            }
            celY += loop.height;
              }

              canvas.SetTransparentColor(16);
        }
Exemplo n.º 3
0
        private void renderCanvas()
        {
            XmlElement viewNode = doc.CreateElement("view");

            viewNode.SetAttribute("id", "" + id);
            doc.AppendChild(viewNode);

            if (Description != "")
            {
                XmlElement descEl = doc.CreateElement("description");
                viewNode.AppendChild(descEl);
                descEl.AppendChild(doc.CreateTextNode(Description));
            }

            canvas = new Canvas(viewWidth * zoomX, viewHeight * zoomY);
            for (int i = 0; i < colorPalette.Length; i++)
            {
                canvas.SetColor(colorPalette[i]);
            }

            int  celY = 0;
            Loop loop;

            for (int loopNr = 0; loopNr < loopCount; loopNr++)
            {
                int celX = 0;

                loop = loops[loopNr];
                int celCount = loop.cels.Length;

                XmlElement loopNode = doc.CreateElement("loop");
                viewNode.AppendChild(loopNode);

                for (int celNr = 0; celNr < celCount; celNr++)
                {
                    Cel cel = loop.cels[celNr];

                    XmlElement celNode = doc.CreateElement("cel");
                    loopNode.AppendChild(celNode);
                    celNode.SetAttribute("width", "" + cel.width);
                    celNode.SetAttribute("height", "" + cel.height);

                    for (int y = 0; y < cel.height; y++)
                    {
                        for (int x = 0; x < cel.width; x++)
                        {
                            int colorIndex = cel.data[x, y];

                            //canvas.SetPixel(celX + x, celY + y, colorIndex);
                            int vX = celX + x;
                            int vY = celY + y;

                            // draw pixels in zoomed fashion
                            for (int zY = vY * zoomY; zY < (vY + 1) * zoomY; zY++)
                            {
                                for (int zX = vX * zoomX; zX < (vX + 1) * zoomX; zX++)
                                {
                                    canvas.SetPixel(zX, zY, colorIndex);
                                }
                            }
                        }
                    }
                    celX += cel.width;
                }
                celY += loop.height;
            }

            canvas.SetTransparentColor(16);
        }
        private void buildPriorityCanvas(int priorityNr)
        {
            int minX = 160;
              int maxX = 0;
              int minY = 168;
              int maxY = 0;
              int width = 0;
              int height = 0;
              bool colorUsed = false;

              // first pass, detect width and height
              for (int y=0; y<168; y++)
              {
            for (int x=0; x<160; x++)
            {
              bool drawPixel = (priorityCanvas.GetPixel(x, y) == priorityNr);
              if (drawPixel)
              {
            colorUsed = true;
            minX = Math.Min(minX, x);
            maxX = Math.Max(maxX, x);
            minY = Math.Min(minY, y);
            maxY = Math.Max(maxY, y);
              }
            }
              }

              // break if the color is actually not used (could happen for color 4)
              if (!colorUsed)
              {
            prioritiesUsed[priorityNr] = false;
            return;
              }
              width = maxX - minX + 1;
              height = maxY - minY + 1;

              Canvas canvas = new Canvas(width * zoomX, height * zoomY);
              for (int i=0; i<16; i++)
              {
            canvas.SetColor(ColorPalette[i]);
              }
              canvas.FillBackground(4);
              canvas.SetTransparentColor(4);
              for (int y=0; y<height; y++)
              {
            for (int x=0; x<width; x++)
            {
              bool drawPixel = (priorityCanvas.GetPixel(x + minX, y + minY) == priorityNr);
              if (drawPixel)
              {
            int color = pictureCanvas.GetPixel(x + minX, y + minY);

            // draw pixels in zoomed fashion
            for (int zY = y * zoomY; zY < (y + 1) * zoomY; zY++)
            {
              for (int zX = x * zoomX; zX < (x + 1) * zoomX; zX++)
              {
                canvas.SetPixel(zX, zY, color);
              }
            }
              }
            }
              }
              priorityCanvases.Push(canvas);

              // add layers information to goaDoc
              XmlElement layerNode = goaDoc.CreateElement("layer");
              layerNode.SetAttribute("priority", "" + priorityNr);
              layerNode.SetAttribute("width", "" + width);
              layerNode.SetAttribute("height", "" + height);
              layerNode.SetAttribute("left", "" + minX);
              layerNode.SetAttribute("top", "" + minY);
              layersNode.AppendChild(layerNode);
        }
        public void InitValues()
        {
            pictureCanvas               = new Canvas(160, 168);
              priorityCanvas              = new Canvas(160, 168);
              controlCanvas               = new Canvas(160, 168);
              pictureDoc                  = new XmlDocument();
              goaDoc                      = new XmlDocument();
              prioritiesUsed              = new bool[16];
              priorityCanvases            = new Stack();
              pictureColor                = 15;
              priorityColor               = 4;
              pictureDrawingEnabled       = false;
              priorityDrawingEnabled      = false;
              isGoaCommand                = false;

              for (int i=0; i<16; i++)
              {
            pictureCanvas.SetColor(ColorPalette[i]);
            priorityCanvas.SetColor(ColorPalette[i]);
            controlCanvas.SetColor(ColorPalette[i]);
            prioritiesUsed[i] = false;
              }

              prioritiesUsed[4] = true;

              pictureCanvas.FillBackground(15);
              priorityCanvas.FillBackground(4);
              controlCanvas.FillBackground(4);
        }
Exemplo n.º 6
0
        private void buildPriorityCanvas(int priorityNr)
        {
            int  minX      = 160;
            int  maxX      = 0;
            int  minY      = 168;
            int  maxY      = 0;
            int  width     = 0;
            int  height    = 0;
            bool colorUsed = false;

            // first pass, detect width and height
            for (int y = 0; y < 168; y++)
            {
                for (int x = 0; x < 160; x++)
                {
                    bool drawPixel = (priorityCanvas.GetPixel(x, y) == priorityNr);
                    if (drawPixel)
                    {
                        colorUsed = true;
                        minX      = Math.Min(minX, x);
                        maxX      = Math.Max(maxX, x);
                        minY      = Math.Min(minY, y);
                        maxY      = Math.Max(maxY, y);
                    }
                }
            }

            // break if the color is actually not used (could happen for color 4)
            if (!colorUsed)
            {
                prioritiesUsed[priorityNr] = false;
                return;
            }
            width  = maxX - minX + 1;
            height = maxY - minY + 1;

            Canvas canvas = new Canvas(width * zoomX, height * zoomY);

            for (int i = 0; i < 16; i++)
            {
                canvas.SetColor(ColorPalette[i]);
            }
            canvas.FillBackground(4);
            canvas.SetTransparentColor(4);
            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    bool drawPixel = (priorityCanvas.GetPixel(x + minX, y + minY) == priorityNr);
                    if (drawPixel)
                    {
                        int color = pictureCanvas.GetPixel(x + minX, y + minY);

                        // draw pixels in zoomed fashion
                        for (int zY = y * zoomY; zY < (y + 1) * zoomY; zY++)
                        {
                            for (int zX = x * zoomX; zX < (x + 1) * zoomX; zX++)
                            {
                                canvas.SetPixel(zX, zY, color);
                            }
                        }
                    }
                }
            }
            priorityCanvases.Push(canvas);

            // add layers information to goaDoc
            XmlElement layerNode = goaDoc.CreateElement("layer");

            layerNode.SetAttribute("priority", "" + priorityNr);
            layerNode.SetAttribute("width", "" + width);
            layerNode.SetAttribute("height", "" + height);
            layerNode.SetAttribute("left", "" + minX);
            layerNode.SetAttribute("top", "" + minY);
            layersNode.AppendChild(layerNode);
        }