コード例 #1
0
        private static string ConvertChunksToManifest(IList <Chunk> chunks)
        {
            string        currentModule    = "";
            string        currentDirectory = null;
            List <string> lines            = new List <string>();
            int           chunkId          = 1;

            foreach (Chunk chunk in chunks)
            {
                chunk.ID = chunkId++;
                lines.Add("C," + chunk.ID + "," + chunk.Width + "," + chunk.Height);

                UniversalBitmap chunkBmp         = new UniversalBitmap(chunk.Width, chunk.Height);
                UniversalBitmap.DrawingSession g = chunkBmp.CreateNewDrawingSession();
                for (int i = 0; i < chunk.Images.Count; ++i)
                {
                    Image  image = chunk.Images[i];
                    string path  = image.File.OriginalPath;
                    string dir;
                    string filename;
                    int    lastSlash = path.LastIndexOf('/');
                    if (lastSlash == -1)
                    {
                        dir      = "/";
                        filename = path;
                    }
                    else
                    {
                        dir      = path.Substring(0, lastSlash);
                        filename = path.Substring(lastSlash + 1);
                    }

                    int x = chunk.X[i];
                    int y = chunk.Y[i];
                    g.Blit(image.File.Bitmap, x, y);
                    if (image.Module != currentModule)
                    {
                        currentModule = image.Module;
                        lines.Add("M," + currentModule);
                    }
                    if (dir != currentDirectory)
                    {
                        currentDirectory = dir;
                        lines.Add("D," + currentDirectory);
                    }
                    lines.Add("F," + x + "," + y + "," + image.Width + "," + image.Height + "," + filename);
                }
                g.Flush();
                chunk.FinalizedBitmap = chunkBmp;
            }
            return(string.Join('\n', lines));
        }