Hi, I'm trying to solve in a generic way this problem. I have to paint a buffer into a Scanline, but taking into account the flipping and rotation of the resulting image, also part of the image can be displaced outside of the canvas only displaying the overlapping area of the buffer image.
Here's a diagram of what I need to draw (please use fixed fonts to read): +----------- CANVAS ------------+ | | | | | +----- BUFFER IMAGE -----+ | |XXXXXXXXXXXXXXXXXX | | |XXXXXXXXXXXXXXXXXX | | |XXXXXXXXXXXXXXXXXX | | |XXXXXXXXXXXXXXXXXX | | |XXXXXXXXXXXXXXXXXX | | |XXXXXXXXXXXXXXXXXX | | |XXXXXXXXXXXXXXXXXX | | +------------------------+ | | | | +-------------------------------+ Initially I calculated the overlapping rectangle (the part marked with X) then traversed from 0 to Y and 0 to X of that overlapped rectangle then painted each pixel into the scanline and incremented the buffer pointer. This worked really fast, but when taking into account Flipping I started adding specific code for each type of flip, I mean Vertical Flip, Horizontal Flip, Both, all by creating a function like PaintHFlip, PaintVFlip, etc. I really don't like this approach. I'm thinking of copying the buffer into an two dimensional matrix, apply transformations, then extract the overlapping part and lastly paint. Before doing so, I'm asking here, because I'm afraid it could take too long to apply "n" transformations before displaying the final result. Regards, -- Leonardo M. Ramé http://leonardorame.blogspot.com -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
