|
|
|
@ -62,7 +62,7 @@ inline int cairoPainterRectSubtraction(TQPen* pen) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline void standardAlphaToPremultipliedAlpha(unsigned char *a, unsigned char *r, unsigned char *g, unsigned char *b) {
|
|
|
|
|
register double alpha_adjust;
|
|
|
|
|
double alpha_adjust;
|
|
|
|
|
|
|
|
|
|
alpha_adjust = (*a / 255.0);
|
|
|
|
|
*r = char( *r * alpha_adjust );
|
|
|
|
@ -72,7 +72,7 @@ inline void standardAlphaToPremultipliedAlpha(unsigned char *a, unsigned char *r
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline void premultipliedAlphaToStandardAlpha(unsigned char *a, unsigned char *r, unsigned char *g, unsigned char *b) {
|
|
|
|
|
register double alpha_adjust;
|
|
|
|
|
double alpha_adjust;
|
|
|
|
|
|
|
|
|
|
alpha_adjust = (*a / 255.0);
|
|
|
|
|
*r = char( *r / alpha_adjust );
|
|
|
|
@ -180,9 +180,9 @@ void TQt3CairoPaintDevice::transferIntermediateSurface() {
|
|
|
|
|
cairo_surface_flush(m_surface);
|
|
|
|
|
cairo_surface_flush(m_intermediateSurface);
|
|
|
|
|
updateSurfaceDimensions();
|
|
|
|
|
register int height = m_height;
|
|
|
|
|
register int width = m_width;
|
|
|
|
|
register int stride = cairo_format_stride_for_width(cairo_image_surface_get_format(m_surface), width);
|
|
|
|
|
int height = m_height;
|
|
|
|
|
int width = m_width;
|
|
|
|
|
int stride = cairo_format_stride_for_width(cairo_image_surface_get_format(m_surface), width);
|
|
|
|
|
cairo_surface_t *usableDeviceSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
|
|
|
|
|
cairo_t *copyPainter = cairo_create(usableDeviceSurface);
|
|
|
|
|
cairo_set_source_surface(copyPainter, m_surface, 0, 0);
|
|
|
|
@ -192,21 +192,21 @@ void TQt3CairoPaintDevice::transferIntermediateSurface() {
|
|
|
|
|
cairo_destroy(copyPainter);
|
|
|
|
|
unsigned char* device_surface_data = cairo_image_surface_get_data(usableDeviceSurface);
|
|
|
|
|
unsigned char* intermediate_surface_data = cairo_image_surface_get_data(m_intermediateSurface);
|
|
|
|
|
register int x;
|
|
|
|
|
register int y;
|
|
|
|
|
register long long offset;
|
|
|
|
|
register unsigned char devicePixel_a;
|
|
|
|
|
register unsigned char devicePixel_r;
|
|
|
|
|
register unsigned char devicePixel_g;
|
|
|
|
|
register unsigned char devicePixel_b;
|
|
|
|
|
register unsigned char intermediatePixel_a;
|
|
|
|
|
register unsigned char intermediatePixel_r;
|
|
|
|
|
register unsigned char intermediatePixel_g;
|
|
|
|
|
register unsigned char intermediatePixel_b;
|
|
|
|
|
register unsigned char combinedPixel_a;
|
|
|
|
|
register unsigned char combinedPixel_r;
|
|
|
|
|
register unsigned char combinedPixel_g;
|
|
|
|
|
register unsigned char combinedPixel_b;
|
|
|
|
|
int x;
|
|
|
|
|
int y;
|
|
|
|
|
long long offset;
|
|
|
|
|
unsigned char devicePixel_a;
|
|
|
|
|
unsigned char devicePixel_r;
|
|
|
|
|
unsigned char devicePixel_g;
|
|
|
|
|
unsigned char devicePixel_b;
|
|
|
|
|
unsigned char intermediatePixel_a;
|
|
|
|
|
unsigned char intermediatePixel_r;
|
|
|
|
|
unsigned char intermediatePixel_g;
|
|
|
|
|
unsigned char intermediatePixel_b;
|
|
|
|
|
unsigned char combinedPixel_a;
|
|
|
|
|
unsigned char combinedPixel_r;
|
|
|
|
|
unsigned char combinedPixel_g;
|
|
|
|
|
unsigned char combinedPixel_b;
|
|
|
|
|
// Execute the desired raster operation
|
|
|
|
|
// WARNING
|
|
|
|
|
// This is VERY SLOW
|
|
|
|
|