git.asbjorn.biz
/
swftools.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
9111bd0
)
use 64 bit operations to update boolean bitmaps
author
Matthias Kramm
<kramm@quiss.org>
Mon, 5 Apr 2010 21:17:58 +0000
(14:17 -0700)
committer
Matthias Kramm
<kramm@quiss.org>
Mon, 5 Apr 2010 21:17:58 +0000
(14:17 -0700)
lib/pdf/BitmapOutputDev.cc
patch
|
blob
|
history
diff --git
a/lib/pdf/BitmapOutputDev.cc
b/lib/pdf/BitmapOutputDev.cc
index
e1cb3d3
..
49f5e3c
100644
(file)
--- a/
lib/pdf/BitmapOutputDev.cc
+++ b/
lib/pdf/BitmapOutputDev.cc
@@
-468,13
+468,35
@@
static void update_bitmap(SplashBitmap*bitmap, SplashBitmap*update, int x1, int
u += width8;
}
} else {
u += width8;
}
} else {
- int x,y;
- for(y=0;y<yspan;y++) {
- for(x=0;x<xspan;x++) {
- b[x] |= u[x];
+ if(((ptroff_t)b&7)==((ptroff_t)u&7)) {
+ int x,y;
+ for(y=0;y<yspan;y++) {
+ Guchar*e1 = b+xspan-8;
+ Guchar*e2 = b+xspan;
+ while(((ptroff_t)b&7) && b<e1) {
+ *b |= *u;
+ b++;u++;
+ }
+ while(b<e1) {
+ *(long long*)b |= *(long long*)u;
+ b+=8;u+=8;
+ }
+ while(b<e2) {
+ *b |= *u;
+ b++;u++;
+ }
+ b += width8-xspan;
+ u += width8-xspan;
+ }
+ } else {
+ int x,y;
+ for(y=0;y<yspan;y++) {
+ for(x=0;x<xspan;x++) {
+ b[x] |= u[x];
+ }
+ b += width8;
+ u += width8;
}
}
- b += width8;
- u += width8;
}
}
}
}
}
}