summaryrefslogtreecommitdiffstats
path: root/src/display/cairo-utils.cpp
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2013-01-30 20:47:35 +0000
committerJohan B. C. Engelen <j.b.c.engelen@alumnus.utwente.nl>2013-01-30 20:47:35 +0000
commita7c6061c0b32affc13bfb818161ca7fc002ef210 (patch)
tree502ca040c51e2a2adfd973bbc2472c1b7e20f84f /src/display/cairo-utils.cpp
parentremoving some more unused functions (diff)
downloadinkscape-a7c6061c0b32affc13bfb818161ca7fc002ef210.tar.gz
inkscape-a7c6061c0b32affc13bfb818161ca7fc002ef210.zip
code cleanup. don't use pointers when you don't have to. use const whereever you can.
(bzr r12077)
Diffstat (limited to 'src/display/cairo-utils.cpp')
-rw-r--r--src/display/cairo-utils.cpp41
1 files changed, 16 insertions, 25 deletions
diff --git a/src/display/cairo-utils.cpp b/src/display/cairo-utils.cpp
index 831b37899..8eeee0277 100644
--- a/src/display/cairo-utils.cpp
+++ b/src/display/cairo-utils.cpp
@@ -597,20 +597,11 @@ void ink_cairo_surface_average_color_premul(cairo_surface_t *surface, double &r,
a = CLAMP(a, 0.0, 1.0);
}
-void srgb_to_linear( double* c ) {
+static guint32 srgb_to_linear( const guint32 c, const guint32 a ) {
- if( *c < 0.04045 ) {
- *c /= 12.92;
- } else {
- *c = pow( (*c+0.055)/1.055, 2.4 );
- }
-}
-
-void srgb_to_linear( guint32* c, guint32 a ) {
-
- *c = unpremul_alpha( *c, a );
+ const guint32 c1 = unpremul_alpha( c, a );
- double cc = *c/255.0;
+ double cc = c1/255.0;
if( cc < 0.04045 ) {
cc /= 12.92;
@@ -619,16 +610,16 @@ void srgb_to_linear( guint32* c, guint32 a ) {
}
cc *= 255.0;
- *c = (int)cc;
+ const guint32 c2 = (int)cc;
- *c = premul_alpha( *c, a );
+ return premul_alpha( c2, a );
}
-void linear_to_srgb( guint32* c, guint32 a ) {
+static guint32 linear_to_srgb( const guint32 c, const guint32 a ) {
- *c = unpremul_alpha( *c, a );
+ const guint32 c1 = unpremul_alpha( c, a );
- double cc = *c/255.0;
+ double cc = c1/255.0;
if( cc < 0.0031308 ) {
cc *= 12.92;
@@ -637,9 +628,9 @@ void linear_to_srgb( guint32* c, guint32 a ) {
}
cc *= 255.0;
- *c = (int)cc;
+ const guint32 c2 = (int)cc;
- *c = premul_alpha( *c, a );
+ return premul_alpha( c2, a );
}
int ink_cairo_surface_srgb_to_linear(cairo_surface_t *surface)
@@ -656,9 +647,9 @@ int ink_cairo_surface_srgb_to_linear(cairo_surface_t *surface)
guint32 px = *reinterpret_cast<guint32*>(data + 4*x);
EXTRACT_ARGB32(px, a,r,g,b) ; // Unneeded semi-colon for indenting
if( a != 0 ) {
- srgb_to_linear( &r, a );
- srgb_to_linear( &g, a );
- srgb_to_linear( &b, a );
+ r = srgb_to_linear( r, a );
+ g = srgb_to_linear( g, a );
+ b = srgb_to_linear( b, a );
}
ASSEMBLE_ARGB32(px2, a,r,g,b);
*reinterpret_cast<guint32*>(data + 4*x) = px2;
@@ -681,9 +672,9 @@ int ink_cairo_surface_linear_to_srgb(cairo_surface_t *surface)
guint32 px = *reinterpret_cast<guint32*>(data + 4*x);
EXTRACT_ARGB32(px, a,r,g,b) ; // Unneeded semi-colon for indenting
if( a != 0 ) {
- linear_to_srgb( &r, a );
- linear_to_srgb( &g, a );
- linear_to_srgb( &b, a );
+ r = linear_to_srgb( r, a );
+ g = linear_to_srgb( g, a );
+ b = linear_to_srgb( b, a );
}
ASSEMBLE_ARGB32(px2, a,r,g,b);
*reinterpret_cast<guint32*>(data + 4*x) = px2;