From 0cd7b5f46ff4a4940b4416a47009820d6ad564ad Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 5 Dec 2013 12:44:38 +0530 Subject: [PATCH] Add basic image manipulation operations --- imgsrc/resize.svg | 5299 ++++++++++++++++++ resources/images/resize.png | Bin 0 -> 8389 bytes src/calibre/gui2/tweak_book/editor/canvas.py | 35 +- src/calibre/gui2/tweak_book/editor/image.py | 86 +- 4 files changed, 5417 insertions(+), 3 deletions(-) create mode 100644 imgsrc/resize.svg create mode 100644 resources/images/resize.png diff --git a/imgsrc/resize.svg b/imgsrc/resize.svg new file mode 100644 index 0000000000..1d33cd86c5 --- /dev/null +++ b/imgsrc/resize.svg @@ -0,0 +1,5299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Oxygen team + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/resize.png b/resources/images/resize.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ae6afa656a8d2c71fcc48e7140706bf34f4070 GIT binary patch literal 8389 zcmV;$AUfZPP)@rWTh`RBL2XSfbf2Chyv+oJ5-`(*O?brwk})Qj zMSPQ)rpXvH7-I(KJiBJ?+RU2u>zTgNKd^$*IDPu`#!z+WP))Q(i$GD1j(5|SZ=7!?L6BM?H!>C>nGEEo(rH4ek5Z~v7@&-B`nA(v3J1fVjYgv+8j0qId$!~g0H#v= zMGnTfv>ic{GnV0u`8i`CgcyX<8A53_r8GbY@ex93g#pS0uf6u#CnMp=pGG55e>4(x zi0+nrLP;^F&pO-Jf-%WB7o0JZaqi=sOGs%DN`r)uDnf`NzE)v?GQpWMXC4RzL;p1# z3fDxU5$HbMk$$RKlCNnRm}%xYeR)ifV+6?=6O416GX^0>@szi3YXP^tcd7gQ2tefltOO7Q=ZsM510lLC z@fsn7QbH&pgn$rK7+?j_-Q69SoR~aa6Rp`EjYd&jUF{HF#rXvuzf0Y_Jb$N5rGh!< ziqOs(mY+$izg7)h=}uU!`1;qsPCGg}ejE;k4@JTe5(4P)b0leM=STp^gdztPl?DKk%2K>d^C%NCeSnv_SGHwMbJS>24EX zNxW6&Iuihd5I_;yeNSob8mKV9O5hj2_{Hysf}uZ-Mx&^S*5uiGbr4GO2<>(H+zi27 zCO`rfk==y0uL}-JD-5vQc=Po)ABlt_-wKDrx_f{}dHm|y>)fdbz!~*3O(!3qBwq+o zNMM%+Pz(VVLsS@G8S(ZTZ*S8A+AHC3I2?^yIsUmkekI+eBEIL~rkRTbgvghA7s1^c z!7&MTS%m?X2^TJ02pTZXgu~&@(MS|kRaFkbolKu*d;B)hnMeJ*%N(_Dmk~lNX?GJF zu*&Rf#TZm+hDsQ?Jb2}mSF}(t^s{Iry00cugJ39FRPu!o`2_Z=d*ufxhtFu10KXbb!;{Li1RXpP0-%xh=96pDoYAR3LrJ;3AS_^Ca*=TY%y5yy{v zOn_8sUlA3^3;PIQg_B<5yYBTYTQKo~g)>S80A79d)st&#*8FuO9Lbx~m9xXtna}67 z@5=i(i-dgKG$EzTBW6(|+qneC<1eBa^y$nB_tI^OFMjchHM{TH{hbXDZU{yrQTTkm z9Pu?pAd-{zTq?KV>=0jh{8Hw^J2z2X&Yu(Vl~Vu81XLJc>G7G*d`5flz6Vd$Z?4}R zst&>L_k&Q98{VZB@j2&?>!48$KFtS7rA2%~ERWwseA7etq6g>sgjR&| z#Qz17U&K_XbAbj>->I%E8e(zy+Mj&wOFOph_|lg8E!enmBQ&1|UDu)cG-$d8Aw@p% z-O}xqc(>Xw73(YK53YPaTz228ME1Xo< z6$V%szWn7c@7b|+$EnSAo3;A7dg!_i-KRs>t=T=gPY0m{=~T+H{n>2MF@AS;&k6V3 zPG1RWE=d0t^AYTOAtmDRI1-6Op%3ucznlAqe&L&!*1PX(_2jz%s_ol!f`uQMul~d? zamQU7$mcbRd(Jeao?yaCNa+;fnFoW7?$5v8l-kejdW}f&@qK!u5CT$2NGb4EJN9!) zC?G)racsNMD5Zd~>wh~C+Alz;loA?|;(_&(jZ#VoAt0r|rT888=K%^Sb_M$zrIc2f zMF_gnTlWiFBq*fV9T{pQ1R$_F^~34S`vuEtn>OF+tFNmg4VxQKRaNDve4-I+IhU>> zol3#TWROXvkWQz;tpytS!@3@|Z!h8~p3^VE6x72E-taFzIf+CffkZrhT~UBH7qAPK z2?78)U;U9CV$+_Dkk*4FfV4^MdaE-eK-{Yx4NjeU zR^brt}p)-_gu9upR3V5c$_}BGgmAZ;2!OBbGlQn4ri7j}aHAk4u8Y>+ zvx$C|Kn7KTn^?t`sg`?vaON_$ZVaNnz8Y+X3ZK%Df3i6EfvnW2@ar`nlI26lwu~CL_8ixGMPkkb94OL-~M)j0^mh{ zS1A;UVSlY8Cult2`_UT8gWm62lgaMfeJdRe4imaHGYHd?=JEl^iihxO~% zJE~sOHBg_mY@2Zg!!VFi1kYrgbJj3mWHOkJ$I;u>g;X->Xn+Eu+CQ*Z%5&}en`9l%j`kIgr?%y;uYeEQ_R}a8xGc{`>*IYXF zs?F4_3Acq)&+qK$#Ko42*uHf;wr|}IpWg@Fufyl_!58pB*L4sAN7bj(X&9M|!w5z? zZJ7f5Y^2jLO%t0N8W5?e$qV^t5viswX}1zgn!1*hQem(COA|_`Ow$~noR}Dj$K!qd z{r#6NT)6P^sZ*y+05?9clSl9(yi{19-{{V58#X~oqB`7*+OQwqI`?(4dP0bE?dBv*4EaaE8+uXFelKSr;3Ff3f_BF z=DlBN*#PTFnaDrt9!?IOHl0_F4#4-DYy z;9%kV6bbd*6FwYfP``^1#N%;HSq#9No16c~4}bW>xcj%Q_|UGmvsL&t7nDT0CEfj9 z3n^P{8&y_aU5(v)_8_49t+9Q3ix%CdgJ?P8yCq*qx6%R`SD9h}lQDa@4@>1wjE{qH zj%|0|3El1C+wZDOfWru0&z}%W@)HRplSwo+HT~dw-}~NWZ(q)<0c!NwU)Si#_pM|0 z*YmYsEZje8p_-uBXG(piyKE`iWHJW+_P_r({P<_DKuD37>9aikEYixZDizVn^e zi}nA!3_u|F5@4%!VRq|@o5CP4WI?z&VujYJ}W+y}T3!k1!%V&CsATSyyk*^B@AZ}I*IA2|2zot^ksfBGjFygCFSM81S8 z!W#w*+sju{?`8%9KvSN+8nV?i%d5A`g_IZ?7(g8DMQ>Z>~7>1+vW3gDQrKRQb za*j~1EE%9w`Hh-|V$WSj836qBl~-}*&0iI~|LE8l{^*atinHg=S;TfpzQYKH0VA8u zIem6JA!Qz+)#0|~4zVf4wXre8<8dbeq@-VI0>&5;Q&X6knZelD*i_qxAAa)n*I!Q; zytE7RGC+#!drheyG^Ktp#q}jO0gEO4Ty0dH`@4%hYawNB3=R$9?|$%d$={Glr|}nm z_3!bF}cD;f)KJ`&wsu)bA9GUB7?K%-UnlB&SwcJ z@$yf8ir&6HJoUum$QlMRHo?8&A2Ush_{!e97{QzPacc%;8Zwy-u3fu^4I4MYXEQ+D zj`fqXv$CnF>7Rf9``>?eA$?SKVW1Z`${g;H(S5JV=3@*ixs#tPnhWpz_AIWBjNq9k zKL!X<;P_tr;GU+s0nwwwz z?svcYy@kH-iZcLEoC%hK@b0?Bh?CzSGVxcD%^MJ)*p(_4*%t5iwdKp0-6W6X`a9{v~u^1-DCt#W;4&8e%&Neqg zEO2YxiFh2Z{_;(nc<3O))z!!vMs7)#l6*?7YnS9xkF@7$2p1DjT}NVS3Vpr37#J9U zM(GD<&z^nu8{hcGqWWWA2FQ>7muFw$g-Z2e+o(FXHgF$iHj8)v;U6$DKJKi}B^m({ z6g#(Xg{EtGudxY&3&;iZMJAiY|9SVfxc}~5sN1k1N5B%EKJ_|U3VsHP-?BqYiVr6R6Gt!+@5!i z2z8q_;@Cq6;rFW%#rc1SkP=Ppo#^Txa8~L#lJBzb?g1Rl_7MuSfyxUAfxg~e3=Ixq zY;-g+IXU_CxpU_xuBV^NmH`wN8v4z5cz4_MhKpA^IxsdeVz;sEu0}P-{_468pRQxW z+O;@#=paJX)mV%b>WuZ{gUjvU$j#0vr3D=S!0jlyOh9jMFZ%oYF+M)d1_lOx=luEe z9oO5x^O}GZ*Z2CUHK)%Mm@}zxvv583Ua5Mu@UmE)I`{YWA=cAl#o@$C`AWtB9gvWa z_I~_=bLgC-CKASx1N(9Q;w4N^Ps3_OF`tPX8XZGAa{-SYI)ISh??^T5=PClj*%;F0 z8`#<+*58j0=+#wf7saA_|~F3$Ax({Kvq^w%<`(iSza}ml~vcJW|j&Ik$msq zNU?VAvdM`FT(F!`blnG^rord;!|(S)_xTVC1@Z9x_hG~O^^hPS z&Sb&4F*!Ab|NWcyFg-Jq?+duhf#xv_%JUx?89{$vAL5gf=(?sbT?akj`ZAtN-^K42_NDd;oWt=VC-yq( z2c>cc3#~H@1D$PcFzu|IT5W4hInV921N-oU0EB`P1B3wfEIm*{v3uuERQm(y?CZ0h zLkO(tgQb~)F@|5i^DYh_*pK`6>;|>{6zVbu%Iig|-9e4+P*31P}=L zQC$^4usVq9s%nISLEN!!9S+=gFM?IoPzzYB=g6sZP9E`wD$=`SX8vb9$)^<^$Yp5JHg2WH2x=03jtb%}VNUShieg0-~6~`jAxyK-i2x z?Q(E#If=S%* zuj|O#CPamdR@7iQf0R;CP~5%qPE=P{q2o%AwMt1y*c17!b^kKYO_YSl&o#Y&enAsD zZWOmQ18~kUF)@KmCS&cwsfa11W0cjkw6|JS8!$;JK~!i+DL7#H0X7IB5S+vB^TAZa zcSQ@*WeO;z*s-Mn)qwz7+S?%*cNooTn}Y=Yb<6wjpIWXyy5;i#rJ$BXsg$dLC27R2 zgDrKMeXqe9xpVIAZCfcUM$&BNP$opJ+gEKNC18h@uo=f4m2l1=A+W9{ii!A?#f*yi zU@3$xyAQL|KYa18m$RR4i#&iAQc9%LX-vlBph~JKb#~Z-JsX$Xn=UEoh5H_Gu2r&# zQtF(6+_GZL&iD{Q9KQmDfKn5Nkw$E207F-Y!8wP|uVekXS|p}sU}T*odZ@qq71*lKQhIO?tvkd;KD%2nRJVLdbR-~_PI|eXK z6XO%sprw*}xAaS|)Z4b7N(pYKe7X9p?d-W7Jf$6k-A1VIx6Ml;kw9DLWei;%wjD_V z2m%2DN(BJTaRP(EYHT_5c_6TE#ro^E$^)3DiP5n!2v<7SN%FXf4_K0I$M!@@D+doa z(STwG;ZEq=3?PND7)9;TFD1q&#&NN&6{BOLuJ5;|j!{AZB0&g+6cRqaj(vOf;)PFt z8XtBJo|l-S1O%E^xPisZ#%+@aFijIzM@B3Hxx!}m#1BFWX9VYk*xt5QBa4Y(Ich3A zRHkBJXaE=6T5-)@tl@kffTRRO+CGOQ2>5;2|KNUn>bV!NZk;9d-B$)oLR_KbGUK)| z0i1J8+DoP!&)VZgRbE?Di^qUE;;;YX&hgIo(jxmPLt`0P}Uc~I|Y~C}9sqM|1Hsi^UeH_P+pK#ih!uhK; z_j4=#0F8n_bK~8zDBRL{0K+gacI}!Y;cmi6JG%$ii60w^_(F&rgSaMyz;(`KGHC0# zjEk2pB4cDqt}aq#JGO4a)6YDM{reB(z0X`oGa7PkR>0S~Wlex#7#JEF%B|EXBE5MPNv2&E9dD10f|+sT5kfy04F}(S_inuK{HO7eU3WRpozJ1W zk=0F0iCdBZve_&K2M1xAX3p^g3N(Oy;}AX1JlLARE%7t6Ni?@KqpjVVE2vP6P#UFp z@PYk!{<-JTux0Cl?R&WpUg4I@17x#V3=9k)ld<-=EeP-2T0ouMPNBy~kWylLdJ2ur zjp*p=1n0bXBw&{X0s%aH@FBeL!tY?s+O-93=9->XtnT5u#CiL_2vqU_^T9Mt3=R%r zHkowF<|3Bk-FwV|YBM=Gi4U4SK=+mIc|)_Bni?EEd=$?<`y7J7U_t%$N_9Y!l{~;g zz!<~T;bBb0<3(+9$>CLZSZFiC=-4Qlnw!wq-&fRGQ{S&q4IA&c1ILe_#795+G5F@$ zC!o|+wD~5jt|V>=2H>1y56mn&|GJiyr47zSdoT!$9xV7CM4x(6ZXALvJ8b0bDZN1Wzf z;t)bmRaJ$1cHe{J$4}tF2lwC5JI_UY_q$i}0P|pMbQC?^-Oe;DwG}E*LcJgp&2@D*<0s@juN+af43J19(Av@h z!!V#$@=SyU^O!iezfG;QN%sYnq1o`UV_5d<4fHc@(v4)-2BtLU}Sl zS>^$fGc&l<*of5ZY|&10mzj*AqpJgLo$XF;pcs5UAMV_7CypLIilav#L3NQ(Zn@xg z5-WKC57O3FXZFSma58;)T0lxL+047-vy1@A@(Hf`L9haWnOM~@vxeM7@ddB2;9 zRi6jwkHyegf%-r0dG z{k@o)DZTBD&*#I|En9K?(Gz(5@h1=n1eWqORuro?4?qa;_S=8It*iG+$u>Tp4|i_c zj>jH*948-p!da7dJ7Lx40j`aV)btL-iVm<_S-YKh>Jv}l=+Q@tHK|~Uuwo2w?%X@u zyonrL*Kya*UHH_q&*6dnH#Qtw!NRa2d4NnN?d$3539EZbDfaHU2fz2b{}{XOy6Z;2 z{+7b3%mciC_BY!zSp%A;;r@O1;d7t+ebm+0FUfb`YFK@F04Yh&m990rckM|$_V~xU zAA9WB!DWAk3LGpu0|+U}Kl&$MxDcqS;s9{%+T_ss^=md0LT*17e+~#CM1TL_RRAlh z`j$NpKq#FER8={%F#2MHvA)<~tWl)^4oZPZ+U0Vz~{t}J(5qD+ds zHHNu8e$<$Qy&s_34$id@w4fbXSi6Vo=&;HI5Q524{cy9e?0EpjaoMNg=+b@Ttqpe` zfJxf2+|OTjwR?F~zAS;%azD4+Ath4%$#Cg^PkNKE>?quPx=wk%=y@4Wy%Q=`w$0NA&j z&o7Jl0IL}*-M_0U^s1l`6$V)4D9d#Ls|hRJzh$>BV6|bT`?q2ORyisRu*y+3>jG9Q zy#0$x9$k$pfq~R=R&Hd4LthO80NY1gvsY7+{ry{F~FV8*`ch znHz|gV6iK$huyWcdh#8>vS9$y2^M~|Qor!}Z9Dg!1#$O3nad!sKYtn@nWKKu&>6=( z8{^HpUhN~UM#TczO8p%5OpxtGKC^7lr%P|FwNQ`}*OmGO)GtB*-w+nf0N!690fPVm zb?t3msh_*P>=@v4hXHC+SxDgJv-$Nkz_|OKbGe5|jRJrqT%c0FsQShB|58Jr@uVJV zs`Kx?^*{Tgd%aFd?>x__)X#w@znOnOU;i&P<~0E;t)gystaSfZ7+{65()}RKR@eXl z05(ZPK~%3#dsNK7_$i>-Hi%2WTVKJ_Vx{|EpYd>*_r8Lgi