r15459 by craig - reindent and removespaces
scribus-commit
scribus-commit at lists.scribus.net
Mon Aug 30 23:05:12 CEST 2010
Author: craig
Date: Mon Aug 30 21:05:12 2010
New Revision: 15459
URL: http://scribus.info/websvn/listing.php?repname=Scribus&sc=1&rev=15459
Log:
reindent and removespaces
Modified:
trunk/Scribus/scribus/scimage.cpp
Modified: trunk/Scribus/scribus/scimage.cpp
URL: http://scribus.info/websvn/diff.php?repname=Scribus&rev=15459&path=/trunk/Scribus/scribus/scimage.cpp
==============================================================================
--- trunk/Scribus/scribus/scimage.cpp (original)
+++ trunk/Scribus/scribus/scimage.cpp Mon Aug 30 21:05:12 2010
@@ -386,245 +386,261 @@
// Stack Blur Algorithm by Mario Klingemann <mario at quasimondo.com>
void ScImage::blur(int radius)
{
- if (radius < 1) {
- return;
- }
-
- QRgb *pix = (QRgb*)bits();
- int w = width();
- int h = height();
- int wm = w-1;
- int hm = h-1;
- int wh = w*h;
- int div = radius+radius+1;
-
- int *r = new int[wh];
- int *g = new int[wh];
- int *b = new int[wh];
- int *a = new int[wh];
- int rsum, gsum, bsum, asum, x, y, i, yp, yi, yw;
- QRgb p;
- int *vmin = new int[qMax(w,h)];
-
- int divsum = (div+1)>>1;
- divsum *= divsum;
- int *dv = new int[256*divsum];
- for (i=0; i < 256*divsum; ++i) {
- dv[i] = (i/divsum);
- }
-
- yw = yi = 0;
-
- int **stack = new int*[div];
- for(int i = 0; i < div; ++i) {
- stack[i] = new int[4];
- }
-
-
- int stackpointer;
- int stackstart;
- int *sir;
- int rbs;
- int r1 = radius+1;
- int routsum, goutsum, boutsum, aoutsum;
- int rinsum, ginsum, binsum, ainsum;
-
- for (y = 0; y < h; ++y){
- rinsum = ginsum = binsum = ainsum
- = routsum = goutsum = boutsum = aoutsum
- = rsum = gsum = bsum = asum = 0;
- for(i =- radius; i <= radius; ++i) {
- p = pix[yi+qMin(wm,qMax(i,0))];
- sir = stack[i+radius];
- sir[0] = qRed(p);
- sir[1] = qGreen(p);
- sir[2] = qBlue(p);
- sir[3] = qAlpha(p);
-
- rbs = r1-abs(i);
- rsum += sir[0]*rbs;
- gsum += sir[1]*rbs;
- bsum += sir[2]*rbs;
- asum += sir[3]*rbs;
-
- if (i > 0){
- rinsum += sir[0];
- ginsum += sir[1];
- binsum += sir[2];
- ainsum += sir[3];
- } else {
- routsum += sir[0];
- goutsum += sir[1];
- boutsum += sir[2];
- aoutsum += sir[3];
- }
- }
- stackpointer = radius;
-
- for (x=0; x < w; ++x) {
-
- r[yi] = dv[rsum];
- g[yi] = dv[gsum];
- b[yi] = dv[bsum];
- a[yi] = dv[asum];
-
- rsum -= routsum;
- gsum -= goutsum;
- bsum -= boutsum;
- asum -= aoutsum;
-
- stackstart = stackpointer-radius+div;
- sir = stack[stackstart%div];
-
- routsum -= sir[0];
- goutsum -= sir[1];
- boutsum -= sir[2];
- aoutsum -= sir[3];
-
- if (y == 0) {
- vmin[x] = qMin(x+radius+1,wm);
- }
- p = pix[yw+vmin[x]];
-
- sir[0] = qRed(p);
- sir[1] = qGreen(p);
- sir[2] = qBlue(p);
- sir[3] = qAlpha(p);
-
- rinsum += sir[0];
- ginsum += sir[1];
- binsum += sir[2];
- ainsum += sir[3];
-
- rsum += rinsum;
- gsum += ginsum;
- bsum += binsum;
- asum += ainsum;
-
- stackpointer = (stackpointer+1)%div;
- sir = stack[(stackpointer)%div];
-
- routsum += sir[0];
- goutsum += sir[1];
- boutsum += sir[2];
- aoutsum += sir[3];
-
- rinsum -= sir[0];
- ginsum -= sir[1];
- binsum -= sir[2];
- ainsum -= sir[3];
-
- ++yi;
- }
- yw += w;
- }
- for (x=0; x < w; ++x){
- rinsum = ginsum = binsum = ainsum
- = routsum = goutsum = boutsum = aoutsum
- = rsum = gsum = bsum = asum = 0;
-
- yp =- radius * w;
-
- for(i=-radius; i <= radius; ++i) {
- yi=qMax(0,yp)+x;
-
- sir = stack[i+radius];
-
- sir[0] = r[yi];
- sir[1] = g[yi];
- sir[2] = b[yi];
- sir[3] = a[yi];
-
- rbs = r1-abs(i);
-
- rsum += r[yi]*rbs;
- gsum += g[yi]*rbs;
- bsum += b[yi]*rbs;
- asum += a[yi]*rbs;
-
- if (i > 0) {
- rinsum += sir[0];
- ginsum += sir[1];
- binsum += sir[2];
- ainsum += sir[3];
- } else {
- routsum += sir[0];
- goutsum += sir[1];
- boutsum += sir[2];
- aoutsum += sir[3];
- }
-
- if (i < hm){
- yp += w;
- }
- }
-
- yi = x;
- stackpointer = radius;
-
- for (y=0; y < h; ++y){
- pix[yi] = qRgba(dv[rsum], dv[gsum], dv[bsum], dv[asum]);
-
- rsum -= routsum;
- gsum -= goutsum;
- bsum -= boutsum;
- asum -= aoutsum;
-
- stackstart = stackpointer-radius+div;
- sir = stack[stackstart%div];
-
- routsum -= sir[0];
- goutsum -= sir[1];
- boutsum -= sir[2];
- aoutsum -= sir[3];
-
- if (x==0){
- vmin[y] = qMin(y+r1,hm)*w;
- }
- p = x+vmin[y];
-
- sir[0] = r[p];
- sir[1] = g[p];
- sir[2] = b[p];
- sir[3] = a[p];
-
- rinsum += sir[0];
- ginsum += sir[1];
- binsum += sir[2];
- ainsum += sir[3];
-
- rsum += rinsum;
- gsum += ginsum;
- bsum += binsum;
- asum += ainsum;
-
- stackpointer = (stackpointer+1)%div;
- sir = stack[stackpointer];
-
- routsum += sir[0];
- goutsum += sir[1];
- boutsum += sir[2];
- aoutsum += sir[3];
-
- rinsum -= sir[0];
- ginsum -= sir[1];
- binsum -= sir[2];
- ainsum -= sir[3];
-
- yi += w;
- }
- }
- delete [] r;
- delete [] g;
- delete [] b;
- delete [] a;
- delete [] vmin;
- delete [] dv;
-
- for(int i = 0; i < div; ++i) {
- delete [] stack[i];
- }
- delete [] stack;
+ if (radius < 1) {
+ return;
+ }
+
+ QRgb *pix = (QRgb*)bits();
+ int w = width();
+ int h = height();
+ int wm = w-1;
+ int hm = h-1;
+ int wh = w*h;
+ int div = radius+radius+1;
+
+ int *r = new int[wh];
+ int *g = new int[wh];
+ int *b = new int[wh];
+ int *a = new int[wh];
+ int rsum, gsum, bsum, asum, x, y, i, yp, yi, yw;
+ QRgb p;
+ int *vmin = new int[qMax(w,h)];
+
+ int divsum = (div+1)>>1;
+ divsum *= divsum;
+ int *dv = new int[256*divsum];
+ for (i=0; i < 256*divsum; ++i) {
+ dv[i] = (i/divsum);
+ }
+
+ yw = yi = 0;
+
+ int **stack = new int*[div];
+ for(int i = 0; i < div; ++i) {
+ stack[i] = new int[4];
+ }
+
+
+ int stackpointer;
+ int stackstart;
+ int *sir;
+ int rbs;
+ int r1 = radius+1;
+ int routsum, goutsum, boutsum, aoutsum;
+ int rinsum, ginsum, binsum, ainsum;
+
+ for (y = 0; y < h; ++y)
+ {
+ rinsum = ginsum = binsum = ainsum
+ = routsum = goutsum = boutsum = aoutsum
+ = rsum = gsum = bsum = asum = 0;
+ for(i =- radius; i <= radius; ++i)
+ {
+ p = pix[yi+qMin(wm,qMax(i,0))];
+ sir = stack[i+radius];
+ sir[0] = qRed(p);
+ sir[1] = qGreen(p);
+ sir[2] = qBlue(p);
+ sir[3] = qAlpha(p);
+
+ rbs = r1-abs(i);
+ rsum += sir[0]*rbs;
+ gsum += sir[1]*rbs;
+ bsum += sir[2]*rbs;
+ asum += sir[3]*rbs;
+
+ if (i > 0)
+ {
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ ainsum += sir[3];
+ }
+ else
+ {
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ aoutsum += sir[3];
+ }
+ }
+ stackpointer = radius;
+
+ for (x=0; x < w; ++x)
+ {
+
+ r[yi] = dv[rsum];
+ g[yi] = dv[gsum];
+ b[yi] = dv[bsum];
+ a[yi] = dv[asum];
+
+ rsum -= routsum;
+ gsum -= goutsum;
+ bsum -= boutsum;
+ asum -= aoutsum;
+
+ stackstart = stackpointer-radius+div;
+ sir = stack[stackstart%div];
+
+ routsum -= sir[0];
+ goutsum -= sir[1];
+ boutsum -= sir[2];
+ aoutsum -= sir[3];
+
+ if (y == 0)
+ {
+ vmin[x] = qMin(x+radius+1,wm);
+ }
+ p = pix[yw+vmin[x]];
+
+ sir[0] = qRed(p);
+ sir[1] = qGreen(p);
+ sir[2] = qBlue(p);
+ sir[3] = qAlpha(p);
+
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ ainsum += sir[3];
+
+ rsum += rinsum;
+ gsum += ginsum;
+ bsum += binsum;
+ asum += ainsum;
+
+ stackpointer = (stackpointer+1)%div;
+ sir = stack[(stackpointer)%div];
+
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ aoutsum += sir[3];
+
+ rinsum -= sir[0];
+ ginsum -= sir[1];
+ binsum -= sir[2];
+ ainsum -= sir[3];
+
+ ++yi;
+ }
+ yw += w;
+ }
+ for (x=0; x < w; ++x)
+ {
+ rinsum = ginsum = binsum = ainsum
+ = routsum = goutsum = boutsum = aoutsum
+ = rsum = gsum = bsum = asum = 0;
+
+ yp =- radius * w;
+
+ for(i=-radius; i <= radius; ++i)
+ {
+ yi=qMax(0,yp)+x;
+
+ sir = stack[i+radius];
+
+ sir[0] = r[yi];
+ sir[1] = g[yi];
+ sir[2] = b[yi];
+ sir[3] = a[yi];
+
+ rbs = r1-abs(i);
+
+ rsum += r[yi]*rbs;
+ gsum += g[yi]*rbs;
+ bsum += b[yi]*rbs;
+ asum += a[yi]*rbs;
+
+ if (i > 0)
+ {
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ ainsum += sir[3];
+ }
+ else
+ {
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ aoutsum += sir[3];
+ }
+
+ if (i < hm)
+ {
+ yp += w;
+ }
+ }
+
+ yi = x;
+ stackpointer = radius;
+
+ for (y=0; y < h; ++y)
+ {
+ pix[yi] = qRgba(dv[rsum], dv[gsum], dv[bsum], dv[asum]);
+
+ rsum -= routsum;
+ gsum -= goutsum;
+ bsum -= boutsum;
+ asum -= aoutsum;
+
+ stackstart = stackpointer-radius+div;
+ sir = stack[stackstart%div];
+
+ routsum -= sir[0];
+ goutsum -= sir[1];
+ boutsum -= sir[2];
+ aoutsum -= sir[3];
+
+ if (x==0)
+ {
+ vmin[y] = qMin(y+r1,hm)*w;
+ }
+ p = x+vmin[y];
+
+ sir[0] = r[p];
+ sir[1] = g[p];
+ sir[2] = b[p];
+ sir[3] = a[p];
+
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ ainsum += sir[3];
+
+ rsum += rinsum;
+ gsum += ginsum;
+ bsum += binsum;
+ asum += ainsum;
+
+ stackpointer = (stackpointer+1)%div;
+ sir = stack[stackpointer];
+
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ aoutsum += sir[3];
+
+ rinsum -= sir[0];
+ ginsum -= sir[1];
+ binsum -= sir[2];
+ ainsum -= sir[3];
+
+ yi += w;
+ }
+ }
+ delete [] r;
+ delete [] g;
+ delete [] b;
+ delete [] a;
+ delete [] vmin;
+ delete [] dv;
+
+ for(int i = 0; i < div; ++i)
+ {
+ delete [] stack[i];
+ }
+ delete [] stack;
}
bool ScImage::convolveImage(QImage *dest, const unsigned int order, const double *kernel)
More information about the scribus-commit
mailing list