summaryrefslogtreecommitdiff
path: root/libopie2/opieui/oimageeffect.cpp
Unidiff
Diffstat (limited to 'libopie2/opieui/oimageeffect.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/oimageeffect.cpp76
1 files changed, 25 insertions, 51 deletions
diff --git a/libopie2/opieui/oimageeffect.cpp b/libopie2/opieui/oimageeffect.cpp
index 3c28bbe..2855da6 100644
--- a/libopie2/opieui/oimageeffect.cpp
+++ b/libopie2/opieui/oimageeffect.cpp
@@ -61,15 +61,13 @@ QImage OImageEffect::gradient(const QSize &size, const QColor &ca,
61 int rDiff, gDiff, bDiff; 61 int rDiff, gDiff, bDiff;
62 int rca, gca, bca, rcb, gcb, bcb; 62 int rca, gca, bca, rcb, gcb, bcb;
63 63
64 QImage image(size, 32); 64 QImage image(size, 32);
65 65
66 if (size.width() == 0 || size.height() == 0) { 66 if (size.width() == 0 || size.height() == 0) {
67#ifndef NDEBUG 67 qDebug( "WARNING: OImageEffect::gradient: invalid image" );
68 cerr << "WARNING: OImageEffect::gradient: invalid image" << endl;
69#endif
70 return image; 68 return image;
71 } 69 }
72 70
73 register int x, y; 71 register int x, y;
74 72
75 rDiff = (rcb = cb.red()) - (rca = ca.red()); 73 rDiff = (rcb = cb.red()) - (rca = ca.red());
@@ -349,15 +347,13 @@ QImage OImageEffect::unbalancedGradient(const QSize &size, const QColor &ca,
349 int rDiff, gDiff, bDiff; 347 int rDiff, gDiff, bDiff;
350 int rca, gca, bca, rcb, gcb, bcb; 348 int rca, gca, bca, rcb, gcb, bcb;
351 349
352 QImage image(size, 32); 350 QImage image(size, 32);
353 351
354 if (size.width() == 0 || size.height() == 0) { 352 if (size.width() == 0 || size.height() == 0) {
355#ifndef NDEBUG 353 qDebug( "WARNING: OImageEffect::unbalancedGradient : invalid image" );
356 cerr << "WARNING: OImageEffect::unbalancedGradient : invalid image\n";
357#endif
358 return image; 354 return image;
359 } 355 }
360 356
361 register int x, y; 357 register int x, y;
362 unsigned int *scanline; 358 unsigned int *scanline;
363 359
@@ -570,15 +566,13 @@ QImage OImageEffect::unbalancedGradient(const QSize &size, const QColor &ca,
570 * each pixel. (mosfet) 566 * each pixel. (mosfet)
571 */ 567 */
572 568
573QImage& OImageEffect::intensity(QImage &image, float percent) 569QImage& OImageEffect::intensity(QImage &image, float percent)
574{ 570{
575 if (image.width() == 0 || image.height() == 0) { 571 if (image.width() == 0 || image.height() == 0) {
576#ifndef NDEBUG 572 qDebug( "WARNING: OImageEffect::intensity : invalid image" );
577 cerr << "WARNING: OImageEffect::intensity : invalid image\n";
578#endif
579 return image; 573 return image;
580 } 574 }
581 575
582 int segColors = image.depth() > 8 ? 256 : image.numColors(); 576 int segColors = image.depth() > 8 ? 256 : image.numColors();
583 unsigned char *segTbl = new unsigned char[segColors]; 577 unsigned char *segTbl = new unsigned char[segColors];
584 int pixels = image.depth() > 8 ? image.width()*image.height() : 578 int pixels = image.depth() > 8 ? image.width()*image.height() :
@@ -637,15 +631,13 @@ QImage& OImageEffect::intensity(QImage &image, float percent)
637} 631}
638 632
639QImage& OImageEffect::channelIntensity(QImage &image, float percent, 633QImage& OImageEffect::channelIntensity(QImage &image, float percent,
640 RGBComponent channel) 634 RGBComponent channel)
641{ 635{
642 if (image.width() == 0 || image.height() == 0) { 636 if (image.width() == 0 || image.height() == 0) {
643#ifndef NDEBUG 637 qDebug( "WARNING: OImageEffect::channelIntensity : invalid image" );
644 cerr << "WARNING: OImageEffect::channelIntensity : invalid image\n";
645#endif
646 return image; 638 return image;
647 } 639 }
648 640
649 int segColors = image.depth() > 8 ? 256 : image.numColors(); 641 int segColors = image.depth() > 8 ? 256 : image.numColors();
650 unsigned char *segTbl = new unsigned char[segColors]; 642 unsigned char *segTbl = new unsigned char[segColors];
651 int pixels = image.depth() > 8 ? image.width()*image.height() : 643 int pixels = image.depth() > 8 ? image.width()*image.height() :
@@ -729,16 +721,14 @@ QImage& OImageEffect::channelIntensity(QImage &image, float percent,
729// 721//
730QImage& OImageEffect::modulate(QImage &image, QImage &modImage, bool reverse, 722QImage& OImageEffect::modulate(QImage &image, QImage &modImage, bool reverse,
731 ModulationType type, int factor, RGBComponent channel) 723 ModulationType type, int factor, RGBComponent channel)
732{ 724{
733 if (image.width() == 0 || image.height() == 0 || 725 if (image.width() == 0 || image.height() == 0 ||
734 modImage.width() == 0 || modImage.height() == 0) { 726 modImage.width() == 0 || modImage.height() == 0) {
735#ifndef NDEBUG 727 qDebug( "WARNING: OImageEffect::modulate : invalid image" );
736 cerr << "WARNING: OImageEffect::modulate : invalid image\n"; 728 return image;
737#endif
738 return image;
739 } 729 }
740 730
741 int r, g, b, h, s, v, a; 731 int r, g, b, h, s, v, a;
742 QColor clr; 732 QColor clr;
743 int mod=0; 733 int mod=0;
744 unsigned int x1, x2, y1, y2; 734 unsigned int x1, x2, y1, y2;
@@ -857,24 +847,22 @@ QImage& OImageEffect::modulate(QImage &image, QImage &modImage, bool reverse,
857 847
858 848
859// Nice and fast direct pixel manipulation 849// Nice and fast direct pixel manipulation
860QImage& OImageEffect::blend(const QColor& clr, QImage& dst, float opacity) 850QImage& OImageEffect::blend(const QColor& clr, QImage& dst, float opacity)
861{ 851{
862 if (dst.width() <= 0 || dst.height() <= 0) 852 if (dst.width() <= 0 || dst.height() <= 0)
863 return dst; 853 return dst;
864 854
865 if (opacity < 0.0 || opacity > 1.0) { 855 if (opacity < 0.0 || opacity > 1.0) {
866#ifndef NDEBUG 856 qDebug( "WARNING: OImageEffect::blend : invalid opacity. Range [0, 1] ");
867 cerr << "WARNING: OImageEffect::blend : invalid opacity. Range [0, 1]\n"; 857 return dst;
868#endif
869 return dst;
870 } 858 }
871 859
872 int depth = dst.depth(); 860 int depth = dst.depth();
873 if (depth != 32) 861 if (depth != 32)
874 dst = dst.convertDepth(32); 862 dst = dst.convertDepth(32);
875 863
876 int pixels = dst.width() * dst.height(); 864 int pixels = dst.width() * dst.height();
877 int rcol, gcol, bcol; 865 int rcol, gcol, bcol;
878 clr.rgb(&rcol, &gcol, &bcol); 866 clr.rgb(&rcol, &gcol, &bcol);
879 867
880#ifdef WORDS_BIGENDIAN // ARGB (skip alpha) 868#ifdef WORDS_BIGENDIAN // ARGB (skip alpha)
@@ -900,28 +888,24 @@ QImage& OImageEffect::blend(const QColor& clr, QImage& dst, float opacity)
900} 888}
901 889
902// Nice and fast direct pixel manipulation 890// Nice and fast direct pixel manipulation
903QImage& OImageEffect::blend(QImage& src, QImage& dst, float opacity) 891QImage& OImageEffect::blend(QImage& src, QImage& dst, float opacity)
904{ 892{
905 if (src.width() <= 0 || src.height() <= 0) 893 if (src.width() <= 0 || src.height() <= 0)
906 return dst; 894 return dst;
907 if (dst.width() <= 0 || dst.height() <= 0) 895 if (dst.width() <= 0 || dst.height() <= 0)
908 return dst; 896 return dst;
909 897
910 if (src.width() != dst.width() || src.height() != dst.height()) { 898 if (src.width() != dst.width() || src.height() != dst.height()) {
911#ifndef NDEBUG 899 qDebug( "WARNING: OImageEffect::blend : src and destination images are not the same size" );
912 cerr << "WARNING: OImageEffect::blend : src and destination images are not the same size\n"; 900 return dst;
913#endif
914 return dst;
915 } 901 }
916 902
917 if (opacity < 0.0 || opacity > 1.0) { 903 if (opacity < 0.0 || opacity > 1.0) {
918#ifndef NDEBUG 904 qDebug( "WARNING: OImageEffect::blend : invalid opacity. Range [0, 1]" );
919 cerr << "WARNING: OImageEffect::blend : invalid opacity. Range [0, 1]\n"; 905 return dst;
920#endif
921 return dst;
922 } 906 }
923 907
924 if (src.depth() != 32) src = src.convertDepth(32); 908 if (src.depth() != 32) src = src.convertDepth(32);
925 if (dst.depth() != 32) dst = dst.convertDepth(32); 909 if (dst.depth() != 32) dst = dst.convertDepth(32);
926 910
927 int pixels = src.width() * src.height(); 911 int pixels = src.width() * src.height();
@@ -954,16 +938,14 @@ QImage& OImageEffect::blend(QImage& src, QImage& dst, float opacity)
954 938
955QImage& OImageEffect::blend(QImage &image, float initial_intensity, 939QImage& OImageEffect::blend(QImage &image, float initial_intensity,
956 const QColor &bgnd, GradientType eff, 940 const QColor &bgnd, GradientType eff,
957 bool anti_dir) 941 bool anti_dir)
958{ 942{
959 if (image.width() == 0 || image.height() == 0 || image.depth()!=32 ) { 943 if (image.width() == 0 || image.height() == 0 || image.depth()!=32 ) {
960#ifndef NDEBUG 944 qDebug( "WARNING: OImageEffect::blend : invalid image" );
961 cerr << "WARNING: OImageEffect::blend : invalid image\n"; 945 return image;
962#endif
963 return image;
964 } 946 }
965 947
966 int r_bgnd = bgnd.red(), g_bgnd = bgnd.green(), b_bgnd = bgnd.blue(); 948 int r_bgnd = bgnd.red(), g_bgnd = bgnd.green(), b_bgnd = bgnd.blue();
967 int r, g, b; 949 int r, g, b;
968 int ind; 950 int ind;
969 951
@@ -1149,15 +1131,13 @@ QImage& OImageEffect::blend(QImage &image, float initial_intensity,
1149 if (b > 255) b = 255; if (b < 0 ) b = 0; 1131 if (b > 255) b = 255; if (b < 0 ) b = 0;
1150 a = qAlpha(data[ind]); 1132 a = qAlpha(data[ind]);
1151 data[ind] = qRgba(r, g, b, a); 1133 data[ind] = qRgba(r, g, b, a);
1152 } 1134 }
1153 } 1135 }
1154 } 1136 }
1155#ifndef NDEBUG 1137 else qDebug( "OImageEffect::blend effect not implemented" );
1156 else cerr << "OImageEffect::blend effect not implemented" << endl;
1157#endif
1158 return image; 1138 return image;
1159} 1139}
1160 1140
1161// Not very efficient as we create a third big image... 1141// Not very efficient as we create a third big image...
1162// 1142//
1163QImage& OImageEffect::blend(QImage &image1, QImage &image2, 1143QImage& OImageEffect::blend(QImage &image1, QImage &image2,
@@ -1181,16 +1161,14 @@ QImage& OImageEffect::blend(QImage &image1, QImage &image2,
1181QImage& OImageEffect::blend(QImage &image1, QImage &image2, 1161QImage& OImageEffect::blend(QImage &image1, QImage &image2,
1182 QImage &blendImage, RGBComponent channel) 1162 QImage &blendImage, RGBComponent channel)
1183{ 1163{
1184 if (image1.width() == 0 || image1.height() == 0 || 1164 if (image1.width() == 0 || image1.height() == 0 ||
1185 image2.width() == 0 || image2.height() == 0 || 1165 image2.width() == 0 || image2.height() == 0 ||
1186 blendImage.width() == 0 || blendImage.height() == 0) { 1166 blendImage.width() == 0 || blendImage.height() == 0) {
1187#ifndef NDEBUG 1167 qDebug( "OImageEffect::blend effect invalid image" );
1188 cerr << "OImageEffect::blend effect invalid image" << endl; 1168 return image1;
1189#endif
1190 return image1;
1191 } 1169 }
1192 1170
1193 int r, g, b; 1171 int r, g, b;
1194 int ind1, ind2, ind3; 1172 int ind1, ind2, ind3;
1195 1173
1196 unsigned int x1, x2, x3, y1, y2, y3; 1174 unsigned int x1, x2, x3, y1, y2, y3;
@@ -1281,16 +1259,14 @@ unsigned int OImageEffect::uHash(unsigned int c)
1281 1259
1282// ----------------------------------------------------------------------------- 1260// -----------------------------------------------------------------------------
1283 1261
1284QImage& OImageEffect::hash(QImage &image, Lighting lite, unsigned int spacing) 1262QImage& OImageEffect::hash(QImage &image, Lighting lite, unsigned int spacing)
1285{ 1263{
1286 if (image.width() == 0 || image.height() == 0) { 1264 if (image.width() == 0 || image.height() == 0) {
1287#ifndef NDEBUG 1265 qDebug( "OImageEffect::hash effect invalid image" );
1288 cerr << "OImageEffect::hash effect invalid image" << endl; 1266 return image;
1289#endif
1290 return image;
1291 } 1267 }
1292 1268
1293 register int x, y; 1269 register int x, y;
1294 unsigned int *data = (unsigned int *)image.bits(); 1270 unsigned int *data = (unsigned int *)image.bits();
1295 unsigned int ind; 1271 unsigned int ind;
1296 1272
@@ -1791,16 +1767,14 @@ bool OImageEffect::blend(
1791 upper.width() > lower.width() || 1767 upper.width() > lower.width() ||
1792 upper.height() > lower.height() || 1768 upper.height() > lower.height() ||
1793 upper.depth() != 32 || 1769 upper.depth() != 32 ||
1794 lower.depth() != 32 1770 lower.depth() != 32
1795 ) 1771 )
1796 { 1772 {
1797#ifndef NDEBUG 1773 qDebug( "OImageEffect::blend : Sizes not correct" );
1798 cerr << "OImageEffect::blend : Sizes not correct\n" ; 1774 return false;
1799#endif
1800 return false;
1801 } 1775 }
1802 1776
1803 output = lower.copy(); 1777 output = lower.copy();
1804 1778
1805 register uchar *i, *o; 1779 register uchar *i, *o;
1806 register int a; 1780 register int a;