protected override Document OnLoad(Stream input) { DdsFile ddsFile = new DdsFile(); ddsFile.Load(input); BitmapLayer layer = Layer.CreateBackgroundLayer(ddsFile.GetWidth(), ddsFile.GetHeight()); Surface surface = layer.Surface; ColorBgra writeColour = new ColorBgra(); byte[] readPixelData = ddsFile.GetPixelData(); for (int y = 0; y < ddsFile.GetHeight(); y++) { for (int x = 0; x < ddsFile.GetWidth(); x++) { int readPixelOffset = (y * ddsFile.GetWidth() * 4) + (x * 4); writeColour.R = readPixelData[readPixelOffset + 0]; writeColour.G = readPixelData[readPixelOffset + 1]; writeColour.B = readPixelData[readPixelOffset + 2]; writeColour.A = readPixelData[readPixelOffset + 3]; surface[x, y] = writeColour; } } // Create a document, add the surface layer to it, and return to caller. Document document = new Document(surface.Width, surface.Height); document.Layers.Add(layer); return(document); }
protected override unsafe void OnSave(Document input, Stream output, SaveConfigToken token, Surface scratchSurface, ProgressEventHandler callback) { DdsSaveConfigToken ddsToken = ( DdsSaveConfigToken )token; // We need to be able to feast on the goo inside.. scratchSurface.Clear(ColorBgra.Transparent); using (RenderArgs ra = new RenderArgs(scratchSurface)) { input.Render(ra, true); } // Create the DDS file, and save it.. DdsFile ddsFile = new DdsFile(); ddsFile.Save(output, scratchSurface, ddsToken, callback); }