Changeset 55


Ignore:
Timestamp:
Jun 18, 2006, 12:50:17 PM (15 years ago)
Author:
Eugene Romanenko
Message:

rotation partially works (searching works ok, selection doesn't works incorrectly yet)

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/SOURCE/gui/docViewer.cpp

    r54 r55  
    8989    zoom        = 1.0;
    9090    realzoom    = 1.0;
     91    rotation    = 0;
    9192    ev          = somGetGlobalEnvironment();
    9293    pixbuf      = NULL;
     
    191192
    192193        pagesizes = new LuSize[ totalpages ];
    193         for ( long i = 0; i < totalpages; i++ ) {
    194             doc->getPageSize( ev, i, &pagesizes[i].x, &pagesizes[i].y );
    195             fullwidth = __max( fullwidth, pagesizes[i].x );
    196             fullheight += pagesizes[i].y;
    197         }
     194        countPagesizes();
    198195
    199196        selrects = new PLuRectSequence[ totalpages ];
     
    218215}
    219216
     217void DocumentViewer::countPagesizes()
     218{
     219    for ( long i = 0; i < totalpages; i++ )
     220    {
     221        doc->getPageSize( ev, i, &pagesizes[i].x, &pagesizes[i].y );
     222        if ( ( rotation == 90 ) || ( rotation == 270 ) ) {
     223            double tmp = pagesizes[i].x;
     224            pagesizes[i].x = pagesizes[i].y;
     225            pagesizes[i].y = tmp;
     226        }
     227        fullwidth = __max( fullwidth, pagesizes[i].x );
     228        fullheight += pagesizes[i].y;
     229    }
     230}
    220231
    221232// closes the document
     
    326337void DocumentViewer::setZoom( double _zoom )
    327338{
    328     zoom = _zoom;
    329339
    330340    if ( doc != NULL ) {
    331         drawPage();
     341        if ( doc->isScalable( ev ) ) {
     342            zoom = _zoom;
     343            drawPage();
     344        }
     345    }
     346    else {
     347        zoom = _zoom;
     348    }
     349}
     350
     351// Sets the rotation
     352// rotation may be 0, 90, 180 or 270 degrees
     353// -90 will be changed to 270, 360 to 0
     354void DocumentViewer::setRotation( long _rotation )
     355{
     356    if ( _rotation == -90 ) {
     357        _rotation = 270;
     358    }
     359    if ( _rotation == 360 ) {
     360        _rotation = 0;
     361    }
     362
     363    if ( doc != NULL )
     364    {
     365        if ( doc->isRotable( ev ) )
     366        {
     367            rotation = _rotation;
     368            countPagesizes();
     369            drawPage();
     370        }
     371    }
     372    else {
     373        rotation = _rotation;
    332374    }
    333375}
     
    469511    if ( doc != NULL )
    470512    {
    471         doc->getPageSize( ev, currentpage, &width, &height );
     513        width  = pagesizes[ currentpage ].x;
     514        height = pagesizes[ currentpage ].y;
    472515
    473516        fullwidth = 0;
     
    738781                _this->pixbuf = new LuPixbuf( _this->ev, rclx, rcly, _this->bpp );
    739782                _this->doc->renderPageToPixbufAsynch( _this->ev, pda->pagenum,
    740                        pda->startpos.x, pda->startpos.y, rclx, rcly, _this->realzoom, 0,
    741                        _this->pixbuf, asynchCallbackFnDraw, asynchCallbackFnAbort, p );
     783                       pda->startpos.x, pda->startpos.y, rclx, rcly, _this->realzoom,
     784                       _this->rotation, _this->pixbuf,
     785                       asynchCallbackFnDraw, asynchCallbackFnAbort, p );
    742786                delete _this->pixbuf;
    743787                _this->pixbuf = NULL;
     
    933977
    934978            doc->renderPageToPixbuf( ev, currentpage, spos_x, spos_y,
    935                                      rclx, rcly, realzoom, 0, pixbuf );
     979                                     rclx, rcly, realzoom, rotation, pixbuf );
    936980            LONG lRop = ROP_SRCCOPY;
    937981            BITMAPINFO2 pbmi;
     
    10831127
    10841128            doc->renderPageToPixbuf( ev, pda->pagenum, spos_x, spos_y,
    1085                                      rclx, rcly, realzoom, 0, pixbuf );
     1129                                     rclx, rcly, realzoom, rotation, pixbuf );
    10861130            LONG lRop = ROP_SRCCOPY;
    10871131            BITMAPINFO2 pbmi;
     
    11201164    r->x2 = ( endpoint->x + sHscrollPos ) / realzoom;
    11211165    r->y2 = ( ( cyClient - endpoint->y ) + sVscrollPos ) / realzoom;
     1166
     1167    /*double tmp_x1 = r->x1;
     1168    double tmp_y1 = r->y1;
     1169    double tmp_x2 = r->x2;
     1170    double tmp_y2 = r->y2;
     1171
     1172    somPrintf( "1: x1: %f, y1: %f, x2: %f, y2: %f, height: %f\n", r->x1, r->y1, r->x2, r->y2, height );
     1173    if ( rotation == 90 ) {
     1174        r->x1 = height - tmp_y1;
     1175        r->y1 = tmp_x1;
     1176        r->x2 = height - tmp_y2;
     1177        r->y2 = tmp_x2;
     1178    }
     1179    somPrintf( "2: x1: %f, y1: %f, x2: %f, y2: %f, height: %f\n", r->x1, r->y1, r->x2, r->y2, height );
     1180    */
    11221181}
    11231182
     
    11381197    double yplus = continuous ? pagenumToPos( pagenum ) : 0;
    11391198
    1140     rcl->xLeft   = ( r->x1 * scale ) - sHscrollPos;
    1141     rcl->yBottom = cyClient - ( yplus + ( r->y2 * scale ) ) + ( sVscrollPos * VScrollStep );
    1142     rcl->xRight  = ( r->x2 * scale ) - sHscrollPos;
    1143     rcl->yTop    = cyClient - ( yplus + ( r->y1 * scale ) ) + ( sVscrollPos * VScrollStep );
     1199    double tmp_x1 = r->x1;
     1200    double tmp_y1 = r->y1;
     1201    double tmp_x2 = r->x2;
     1202    double tmp_y2 = r->y2;
     1203
     1204    if ( rotation == 90 )
     1205    {
     1206        tmp_x1 = ( width / scale ) - r->y2;
     1207        tmp_y1 = r->x1;
     1208        tmp_x2 = ( width / scale ) - r->y1;
     1209        tmp_y2 = r->x2;
     1210    }
     1211    else if ( rotation == 180 )
     1212    {
     1213        tmp_x1 = ( width / scale ) - r->x2;
     1214        tmp_y1 = ( height / scale ) - r->y2;
     1215        tmp_x2 = ( width / scale ) - r->x1;
     1216        tmp_y2 = ( height / scale ) - r->y1;
     1217    }
     1218    else if ( rotation == 270 )
     1219    {
     1220        tmp_x1 = r->y1;
     1221        tmp_y1 = ( height / scale ) - r->x2;
     1222        tmp_x2 = r->y2;
     1223        tmp_y2 = ( height / scale ) - r->x1;
     1224    }
     1225
     1226    rcl->xLeft   = ( tmp_x1 * scale ) - sHscrollPos;
     1227    rcl->yBottom = cyClient - ( yplus + ( tmp_y2 * scale ) ) + ( sVscrollPos * VScrollStep );
     1228    rcl->xRight  = ( tmp_x2 * scale ) - sHscrollPos;
     1229    rcl->yTop    = cyClient - ( yplus + ( tmp_y1 * scale ) ) + ( sVscrollPos * VScrollStep );
    11441230}
    11451231
  • trunk/Lucide/SOURCE/gui/docViewer.h

    r50 r55  
    7171        double getZoom() { return zoom; }
    7272        double getRealZoom() { return realzoom; }
     73        void setRotation( long _rotation );
     74        long getRotation() { return rotation; }
    7375        void selectAll();
    7476        void copyToClipbrd();
     
    8385        void drawPage();
    8486        void adjustSize();
     87                void countPagesizes();
    8588
    8689        MRESULT vertScroll( HWND hwnd, MPARAM mp2, HRGN hrgn );
     
    143146        short bpp;
    144147        double width, height, zoom, realzoom, fullwidth, fullheight;
     148        long rotation;
    145149        long totalpages, currentpage;
    146150        ProgressDlg *progressDlg;
  • trunk/Lucide/SOURCE/gui/lucide.cpp

    r51 r55  
    643643                    return (MRESULT)FALSE;
    644644
     645                case CM_ROTATE90CW:
     646                    docViewer->setRotation( docViewer->getRotation() + 90 );
     647                    return (MRESULT)FALSE;
     648
     649                case CM_ROTATE90CCW:
     650                    docViewer->setRotation( docViewer->getRotation() - 90 );
     651                    return (MRESULT)FALSE;
     652
    645653                case CM_NAVPANE:
    646654                    {
  • trunk/Lucide/SOURCE/gui/makefile

    r54 r55  
    11.autodepend
    22
    3 TEST=1
     3TEST=0
    44VERSION=Beta 1.2
    55
  • trunk/Lucide/changelog

    r51 r55  
     1Beta-1.2:
     2
     3
    14Beta-1.1:
    25  - Poppler (pdf rendering) library updated to version 0.5.3.
  • trunk/poppler/mypoppler/poppler/Makefile

    r40 r55  
    33CC=wcl386
    44
    5 CFLAGS=-zq -zp=4 -bm -sg -ox -xs -xr -I.. -I..\goo -I..\..\..\libjpeg -I..\..\freetype-2.1.10\include -I..\..\fontconfig-2.3.2-os2 -DOS2 -DUSE_ANNOTS_VIEW
     5CFLAGS=-zq -zp=4 -bm -sg -ox -xs -xr -I.. -I..\goo -I..\..\..\libjpeg -I..\..\fontconfig-2.3.2-os2 -DOS2 -DUSE_ANNOTS_VIEW
    66
    77LIBS=libpoppler.lib
Note: See TracChangeset for help on using the changeset viewer.