From 9f41ff9d13d8763c7f45c0b54339b02197e456fd Mon Sep 17 00:00:00 2001 From: Fabio D'Urso Date: Tue, 12 Jun 2012 12:19:21 +0200 Subject: [PATCH] Paint some other annotation tool icons dynamically Affected tools: - Note - Inline Note - Ink - Highlighter Note that the Stamp tool is the only one that's left with a static icon --- ui/data/CMakeLists.txt | 8 +-- .../tool-highlighter-okular-colorizable.svgz | Bin 0 -> 15084 bytes .../sources/tool-ink-okular-colorizable.svgz | Bin 0 -> 5130 bytes .../tool-note-inline-okular-colorizable.svgz | Bin 0 -> 5028 bytes .../sources/tool-note-okular-colorizable.svgz | Bin 0 -> 13509 bytes .../tool-highlighter-okular-colorizable.png | Bin 0 -> 2148 bytes ui/data/tool-ink-okular-colorizable.png | Bin 0 -> 1770 bytes .../tool-note-inline-okular-colorizable.png | Bin 0 -> 515 bytes ui/data/tool-note-okular-colorizable.png | Bin 0 -> 670 bytes ui/guiutils.cpp | 39 ++++++++++++ ui/guiutils.h | 5 ++ ui/pagepainter.cpp | 35 +---------- ui/pagepainter.h | 4 -- ui/pageviewannotator.cpp | 57 ++++++++++++------ 14 files changed, 87 insertions(+), 61 deletions(-) create mode 100644 ui/data/sources/tool-highlighter-okular-colorizable.svgz create mode 100644 ui/data/sources/tool-ink-okular-colorizable.svgz create mode 100644 ui/data/sources/tool-note-inline-okular-colorizable.svgz create mode 100644 ui/data/sources/tool-note-okular-colorizable.svgz create mode 100644 ui/data/tool-highlighter-okular-colorizable.png create mode 100644 ui/data/tool-ink-okular-colorizable.png create mode 100644 ui/data/tool-note-inline-okular-colorizable.png create mode 100644 ui/data/tool-note-okular-colorizable.png diff --git a/ui/data/CMakeLists.txt b/ui/data/CMakeLists.txt index 0734f1a0b..2fc16e29a 100644 --- a/ui/data/CMakeLists.txt +++ b/ui/data/CMakeLists.txt @@ -9,12 +9,12 @@ install(FILES # install annotation tool images install(FILES tool-base-okular.png - tool-highlighter-okular.png - tool-ink-okular.png + tool-highlighter-okular-colorizable.png + tool-ink-okular-colorizable.png tool-note.png - tool-note-okular.png + tool-note-okular-colorizable.png tool-note-inline.png - tool-note-inline-okular.png + tool-note-inline-okular-colorizable.png tool-stamp-okular.png DESTINATION ${DATA_INSTALL_DIR}/okular/pics) # install annotation page images diff --git a/ui/data/sources/tool-highlighter-okular-colorizable.svgz b/ui/data/sources/tool-highlighter-okular-colorizable.svgz new file mode 100644 index 0000000000000000000000000000000000000000..6d482b90faf209a78fa1f5039f7178daedd82a26 GIT binary patch literal 15084 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 z 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 literal 0 HcmV?d00001 diff --git a/ui/data/sources/tool-note-inline-okular-colorizable.svgz b/ui/data/sources/tool-note-inline-okular-colorizable.svgz new file mode 100644 index 0000000000000000000000000000000000000000..aecc47309117d11af2e816e6df855fb57558bd86 GIT binary patch literal 5028 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 az<&VbEwC60HlG~;0000RzgP4WI_FMgWSF z!SxQts=$|lEx^_lKJNiP1m^8dsz@nc2et!Wv3MKM3Ty&4n%+=io}UB10LC2z^cm$V+Z z2D}Fh16hnJuD8Ja2M~5AbZXWmc!sft{{Z5^KP{eK4}enk*aVpXJ_cgI-!ZbYE&#DPcM$FoQ&qf*KRS-EATl)scxdZm=ub;V3TBk-!}oj`}hJI&*EEere_7y_nO z8(aV=Wp3b`z;`U(ZUbZn_&#vAQh;K%)dI5*_!h-)Y;(Xt;P#3$Ia#j~zD-K`Qz@lh zq&8Ag%GXyqw^{%NZ;(>HDW&{)3B+GkE5d49GcW>tqmXEfJL|IB^jbWS)R|&muzaVO z5X;QY14$e317I&kM1^w%khAy(jLUXwk$FD_{#_2hc8pYh$p&aCdyf?|uv$??id3}| z6H>~bmC{(P1|F0d@dEGx@EXuxYM`B~;8o!B7=>i@0=)GpSYrGF-o>bkRc);M~ZviNZQl}`&iv43Jy<#V#E3BFj_ec zrdUB(F%K7Qh*b<=M!Ufj7rZFEbcyp-15gyjjnTrl3NPI~6(Y_{DT{Vn9RnzevH_z3 zQE1;=h3iaF1tZ$bO2Uo-OyL%mH?yq~=P)*=i^bNvEC5qj#c0>9WDCGkDP`7SSt7F-vA zzP>*9#fuj|Y;0_txOC~#p9cpAzxe!Mh3)xO{ltkA?h6+#T$`Mn6i=Q!krNXW^77@& z$`1jZAvnkLL9G)5`;pb#@)MjU){TR z?;EYHt;*EY6uDdum&?Wc{Cu6NsvTwF&C1No4B2cJm&-*e zl_HTy+)S61Uq;GMOZiNZh}5>(;?YBr*k6 zz8M7qfzIyk?khWX?D)E>s@%SPo3^$#+-^7NbeecPe)s0hn+MOHJ^TE9V$}cwfk02j=a&7mqT(Vn#jpDP{#_oAhh#EICX+!*iOc0e(==^# zbo58X#G%3>92gkzc6WCV`+UBg9*+lI*U4mz2c>*I&+P217L7*V3WvjgT4|250fNDx z@9^QnSA9O;&Zed&W@l%~WHJaLP!t7C)3jJD_SWgsr#~n)PgwxLV9?jo(=+V#dcSHd zxPob#rjLw_yd4gQONv7oMOcX3@AvOqT5v*$LfYRBhr@rcGoPa(3Z7Bh@7NUw2N~$^@85Rp*s)=+*ZWFSQxkJ@b1W<@Af+Ui%c1MKcH_p4 zcS51i@0|o?s|Nb}`?noEdi1K->wTrUxfxBOA z?d`qR(b3^+X=!;uTnK@tX}T%?JE!8d0QT?S|9*RWyH8bBW@cty5TBl&)}qnq@iS-6 zlqC)}ickpAAf+UkOp?uJDb$RnX-QN3x8;hj3UL1X`M&n{c5gf$CzVQ(&*#bIa!gH4 z=_4Z}?^Y^a65!OSQ`@_`x_+`{%a&G;$HSvXk9hX%nbb6GJ{F4|9~v6^O{L;c;xb%Z zT>No79*+ni^180)#>dD1mdoY-nog(Rk3=HzYKTLLA{0WrCWNR^u zEm2zl`F#FUAw;aczWz`!7<{r8;y}rLf$PqlJI!moZ>TjWUOK>k0p4U55d?p@>i_@% M07*qoM6N<$g0po^L;wH) literal 0 HcmV?d00001 diff --git a/ui/data/tool-note-inline-okular-colorizable.png b/ui/data/tool-note-inline-okular-colorizable.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f7c186f1d87ad13bdd98765fa352f90633003c GIT binary patch literal 515 zcmV+e0{s1nP)N)T zKo0Of02sHE@p$}oFc^G!?+_{Fuf<~V?XIb{zSe9u`>sDg^ZESeZO&~yyn^+54L}q{ zTrL-qBq2!>f*>G{V*q^LCk#UXf*`ot^GwETrj!yXC51u(Aq2Kx(A*G~PEHa%=F-`Mr0O#|WG)<{itJt>9;c&ol9J<{uN~!D4>-9QH zDUQb@uImzpA-!JjdU9_DFbsocv&rdnqS0v3Znue|2+OjF;~2+ra9x+pW`pN>Y`0rV zr4p@H3)3`7(-h0HUJbtoApQ=9!{O7#mSy329_4bGe!u^)Pirk6dE)jr9F0bwJDtwU z)8v1Y@B6=(%jJ)!09h#WmoNv&0djyGAP2|+a)8VM{s8RH1Wsl>r&9m`002ovPDHLk FV1htk0Dh zVRxaR5El_OE>slc-aGeex=Kn&3*}D0E;)`(CKvOcDtVgAf?2zEKJkn?(U8t2nd3JWHQP5`8l5FQLon# zLg2bC?RJ||sq{`m382+#vET1Wr_*e=TXMPFTkdc;aC>|E!O-(OT-W9G5i0>aK0Y#^ z&$+p|VX;_{N~Ne)t2{kDkT%>t0g zWY9E?QmKS(+Xx}Jyu1V;pU+dT*Lit)A(zXcX}{mT5EQj$)mv2B}+iwpMqJ+A9gsZE~$^ZZW literal 0 HcmV?d00001 diff --git a/ui/guiutils.cpp b/ui/guiutils.cpp index 1d67d3ad7..4ae75e4b2 100644 --- a/ui/guiutils.cpp +++ b/ui/guiutils.cpp @@ -240,4 +240,43 @@ Okular::Movie* renditionMovieFromScreenAnnotation( const Okular::ScreenAnnotatio return 0; } +// from Arthur - qt4 +inline int qt_div_255(int x) { return (x + (x>>8) + 0x80) >> 8; } + +void colorizeImage( QImage & grayImage, const QColor & color, unsigned int destAlpha ) +{ + // Make sure that the image is Format_ARGB32_Premultiplied + if ( grayImage.format() != QImage::Format_ARGB32_Premultiplied ) + grayImage = grayImage.convertToFormat( QImage::Format_ARGB32_Premultiplied ); + + // iterate over all pixels changing the alpha component value + unsigned int * data = (unsigned int *)grayImage.bits(); + unsigned int pixels = grayImage.width() * grayImage.height(); + int red = color.red(), + green = color.green(), + blue = color.blue(); + + int source, sourceSat, sourceAlpha; + for( register unsigned int i = 0; i < pixels; ++i ) + { // optimize this loop keeping byte order into account + source = data[i]; + sourceSat = qRed( source ); + int newR = qt_div_255( sourceSat * red ), + newG = qt_div_255( sourceSat * green ), + newB = qt_div_255( sourceSat * blue ); + if ( (sourceAlpha = qAlpha( source )) == 255 ) + { + // use destAlpha + data[i] = qRgba( newR, newG, newB, destAlpha ); + } + else + { + // use destAlpha * sourceAlpha product + if ( destAlpha < 255 ) + sourceAlpha = qt_div_255( destAlpha * sourceAlpha ); + data[i] = qRgba( newR, newG, newB, sourceAlpha ); + } + } +} + } diff --git a/ui/guiutils.h b/ui/guiutils.h index 2ae4ab3d3..df7a6b109 100644 --- a/ui/guiutils.h +++ b/ui/guiutils.h @@ -12,6 +12,8 @@ #include +class QColor; +class QImage; class QPixmap; class QSize; class QWidget; @@ -51,6 +53,9 @@ namespace GuiUtils * a media rendition. */ Okular::Movie* renditionMovieFromScreenAnnotation( const Okular::ScreenAnnotation * annotation ); + + // colorize a gray image to the given color + void colorizeImage( QImage & image, const QColor & color, unsigned int alpha = 255 ); } diff --git a/ui/pagepainter.cpp b/ui/pagepainter.cpp index 91ae211fb..5390dae9a 100644 --- a/ui/pagepainter.cpp +++ b/ui/pagepainter.cpp @@ -720,7 +720,7 @@ void PagePainter::paintCroppedPageOnPainter( QPainter * destPainter, const Okula // use it to colorize the icon, otherwise the icon will be // "gray" if ( a->style().color().isValid() ) - colorizeImage( scaledImage, a->style().color(), opacity ); + GuiUtils::colorizeImage( scaledImage, a->style().color(), opacity ); pixmap = QPixmap::fromImage( scaledImage ); // draw the mangled image to painter @@ -926,39 +926,6 @@ void PagePainter::changeImageAlpha( QImage & image, unsigned int destAlpha ) } } -void PagePainter::colorizeImage( QImage & grayImage, const QColor & color, - unsigned int destAlpha ) -{ - // iterate over all pixels changing the alpha component value - unsigned int * data = (unsigned int *)grayImage.bits(); - unsigned int pixels = grayImage.width() * grayImage.height(); - int red = color.red(), - green = color.green(), - blue = color.blue(); - - int source, sourceSat, sourceAlpha; - for( register unsigned int i = 0; i < pixels; ++i ) - { // optimize this loop keeping byte order into account - source = data[i]; - sourceSat = qRed( source ); - int newR = qt_div_255( sourceSat * red ), - newG = qt_div_255( sourceSat * green ), - newB = qt_div_255( sourceSat * blue ); - if ( (sourceAlpha = qAlpha( source )) == 255 ) - { - // use destAlpha - data[i] = qRgba( newR, newG, newB, destAlpha ); - } - else - { - // use destAlpha * sourceAlpha product - if ( destAlpha < 255 ) - sourceAlpha = qt_div_255( destAlpha * sourceAlpha ); - data[i] = qRgba( newR, newG, newB, sourceAlpha ); - } - } -} - void PagePainter::drawShapeOnImage( QImage & image, const NormalizedPath & normPath, diff --git a/ui/pagepainter.h b/ui/pagepainter.h index 42a73130f..830c9fe49 100644 --- a/ui/pagepainter.h +++ b/ui/pagepainter.h @@ -63,10 +63,6 @@ class PagePainter // set the alpha component of the image to a given value static void changeImageAlpha( QImage & image, unsigned int alpha ); - // colorize a gray image to the given color - static void colorizeImage( QImage & image, const QColor & color, - unsigned int alpha = 255 ); - // my pretty dear raster function typedef QList< Okular::NormalizedPoint > NormalizedPath; enum RasterOperation { Normal, Multiply }; diff --git a/ui/pageviewannotator.cpp b/ui/pageviewannotator.cpp index d387e4cd8..13382edc3 100644 --- a/ui/pageviewannotator.cpp +++ b/ui/pageviewannotator.cpp @@ -36,6 +36,7 @@ #include "core/annotations.h" #include "settings.h" #include "annotationtools.h" +#include "guiutils.h" #include "pageview.h" /** @short PickPointEngine */ @@ -996,20 +997,13 @@ void PageViewAnnotator::detachAnnotation() QPixmap PageViewAnnotator::makeToolPixmap( const QDomElement &toolElement ) { QPixmap pixmap( 32, 32 ); - QString iconName; - const QString annotType = toolElement.attribute( "type" ); - if ( annotType == "note-linked" ) - iconName = "tool-note-okular"; - else if ( annotType == "note-inline" ) - iconName = "tool-note-inline-okular"; - else if ( annotType == "ink" ) - iconName = "tool-ink-okular"; - else if ( annotType == "highlight" ) - iconName = "tool-highlighter-okular"; - else if ( annotType == "stamp" ) - iconName = "tool-stamp-okular"; + if ( annotType == "stamp" ) + { + // Load static image file + pixmap.load( KStandardDirs::locate( "data", "okular/pics/tool-stamp-okular.png" ) ); + } else { // Load base pixmap. We'll draw on top of it @@ -1033,6 +1027,38 @@ QPixmap PageViewAnnotator::makeToolPixmap( const QDomElement &toolElement ) p.setPen( QPen( engineColor, 2 ) ); p.drawEllipse( 2, 7, 21, 14 ); } + else if ( annotType == "highlight" ) + { + QImage overlay( KStandardDirs::locate( "data", "okular/pics/tool-highlighter-okular-colorizable.png" ) ); + QImage colorizedOverlay = overlay; + GuiUtils::colorizeImage( colorizedOverlay, engineColor ); + + p.drawImage( QPoint(0,0), colorizedOverlay ); // Trail + p.drawImage( QPoint(0,-32), overlay ); // Text + Shadow (uncolorized) + p.drawImage( QPoint(0,-64), colorizedOverlay ); // Pen + } + else if ( annotType == "ink" ) + { + QImage overlay( KStandardDirs::locate( "data", "okular/pics/tool-ink-okular-colorizable.png" ) ); + QImage colorizedOverlay = overlay; + GuiUtils::colorizeImage( colorizedOverlay, engineColor ); + + p.drawImage( QPoint(0,0), colorizedOverlay ); // Trail + p.drawImage( QPoint(0,-32), overlay ); // Shadow (uncolorized) + p.drawImage( QPoint(0,-64), colorizedOverlay ); // Pen + } + else if ( annotType == "note-inline" ) + { + QImage overlay( KStandardDirs::locate( "data", "okular/pics/tool-note-inline-okular-colorizable.png" ) ); + GuiUtils::colorizeImage( overlay, engineColor ); + p.drawImage( QPoint(0,0), overlay ); + } + else if ( annotType == "note-linked" ) + { + QImage overlay( KStandardDirs::locate( "data", "okular/pics/tool-note-okular-colorizable.png" ) ); + GuiUtils::colorizeImage( overlay, engineColor ); + p.drawImage( QPoint(0,0), overlay ); + } else if ( annotType == "polygon" ) { QPainterPath path; @@ -1090,13 +1116,6 @@ QPixmap PageViewAnnotator::makeToolPixmap( const QDomElement &toolElement ) } } - if ( !iconName.isEmpty() ) - { - // Load static image file - const QString fileName = "okular/pics/" + iconName + ".png"; - pixmap.load( KStandardDirs::locate( "data", fileName ) ); - } - return pixmap; }