public MemoryImageWriter(IMemoryReaderWriter imageWriter, int width, int bufferWidth) { this.imageWriter = imageWriter; minWidth = System.Math.Min(width, bufferWidth); skipWidth = System.Math.Max(0, bufferWidth - width); x = 0; }
public static IMemoryReaderWriter getImageWriter(int address, int width, int bufferWidth, int pixelFormat) { int step = pspsharp.graphics.RE.IRenderingEngine_Fields.sizeOfTextureType[pixelFormat]; IMemoryReaderWriter imageWriter = MemoryReaderWriter.getMemoryReaderWriter(address, step); switch (pixelFormat) { case GeCommands.TPSM_PIXEL_STORAGE_MODE_16BIT_ABGR4444: imageWriter = new PixelFormat4444Encoder(imageWriter); break; case GeCommands.TPSM_PIXEL_STORAGE_MODE_16BIT_ABGR5551: imageWriter = new PixelFormat5551Encoder(imageWriter); break; case GeCommands.TPSM_PIXEL_STORAGE_MODE_16BIT_BGR5650: imageWriter = new PixelFormat565Encoder(imageWriter); break; case GeCommands.TPSM_PIXEL_STORAGE_MODE_32BIT_ABGR8888: // We can use directly the MemoryReaderWriter, no format convertion needed. break; case BaseRenderer.depthBufferPixelFormat: // We can use directly the MemoryReaderWriter, no format convertion needed. break; } if (bufferWidth > width) { imageWriter = new MemoryImageWriter(imageWriter, width, bufferWidth); } return(imageWriter); }
public override int ioRead(TPointer outputPointer, int outputLength) { int readLength = base.ioRead(outputPointer, outputLength); if (readLength > 0) { IMemoryReaderWriter memoryReaderWriter = MemoryReaderWriter.getMemoryReaderWriter(outputPointer.Address, readLength, 1); for (int i = 0; i < readLength; i++) { int value = memoryReaderWriter.readCurrent(); value ^= xor; memoryReaderWriter.writeNext(value); } memoryReaderWriter.flush(); } return(readLength); }
public PixelFormat565Encoder(IMemoryReaderWriter memoryReaderWriter) { this.memoryReaderWriter = memoryReaderWriter; }
public RendererWriterGeneric(int fbAddress, int fbBufferWidth, int fbPixelFormat, int depthAddress, int depthBufferWidth, int depthPixelFormat) { fbWriter = ImageWriter.getImageWriter(fbAddress, fbBufferWidth, fbBufferWidth, fbPixelFormat); depthWriter = ImageWriter.getImageWriter(depthAddress, depthBufferWidth, depthBufferWidth, depthPixelFormat); }
public RendererWriterGenericNoDepth(int fbAddress, int fbBufferWidth, int fbPixelFormat) { fbWriter = ImageWriter.getImageWriter(fbAddress, fbBufferWidth, fbBufferWidth, fbPixelFormat); }