source: trunk/poppler/mypoppler/test1.cpp @ 56

Last change on this file since 56 was 2, checked in by Eugene Romanenko, 16 years ago

First import

File size: 4.5 KB
Line 
1#define INCL_DOS
2#define INCL_WIN
3#define INCL_GPI
4#include <os2.h>
5
6extern "C" LONG APIENTRY GpiDrawBits(HPS hps,
7                                   PVOID pBits,
8                                   PBITMAPINFO2 pbmiInfoTable,
9                                   LONG lCount,
10                                   PPOINTL aptlPoints,
11                                   LONG lRop,
12                                   ULONG flOptions);
13
14#include <goo/gmem.h>
15#include <splash/SplashTypes.h>
16#include <splash/SplashBitmap.h>
17#include "Object.h"
18#include "SplashOutputDev.h"
19#include "GfxState.h"
20#include "PDFDoc.h"
21#include "GlobalParams.h"
22#include "ErrorCodes.h"
23
24HAB   hab;
25HWND  hWndFrame;
26HWND  hWndClient;
27PDFDoc *doc;
28SplashOutputDev *out;
29
30static int pdfload( const char *filename )
31{
32  int err;
33  GooString *filename_g;
34  int w, h;
35
36  filename_g = new GooString(filename);
37  // open the PDF file
38  doc = new PDFDoc(filename_g, 0, 0);
39  delete filename_g;
40
41  if (!doc->isOk()) {
42      err = doc->getErrorCode();
43      delete doc;
44      return err;
45  }
46
47  SplashColor sc;
48  sc[0] = 255;
49  sc[1] = 255;
50  sc[2] = 255;
51  out = new SplashOutputDev(splashModeBGR8, 4, gFalse, sc );
52
53  out->startDoc(doc->getXRef());
54  doc->displayPage(out, 1, 120, 120, 0, gFalse, gTrue, gTrue);
55
56  return errNone;
57}
58
59
60static MRESULT EXPENTRY wndProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
61{
62    switch ( msg )
63    {
64        case WM_ERASEBACKGROUND:
65            return (MRESULT)TRUE;
66
67        case WM_PAINT:
68            {
69                RECTL rcl;
70                HPS hps = WinBeginPaint( hwnd , 0L , 0L );
71                WinQueryWindowRect( hwnd , &rcl );
72                //WinDrawText( hps , -1 , "test" , &rcl , CLR_BLACK, CLR_PALEGRAY,
73                //             DT_CENTER | DT_VCENTER | DT_ERASERECT );
74
75                BITMAPINFO2  pbmi;
76                // target and source rectangles
77                pbmi.cbFix = 16L;
78                pbmi.cx = out->getBitmapWidth();
79                pbmi.cy = out->getBitmapHeight();
80                pbmi.cPlanes = 1;
81                pbmi.cBitCount = 24;
82                //POINTL aptlPoints[4]={ 0, 0, pbmi.cx, pbmi.cy, 0, 0, pbmi.cx, pbmi.cy };
83
84                printf( "cx/cy: %d/%d\n", pbmi.cx, pbmi.cy );
85
86                void *dptr = out->getBitmap()->getDataPtr();
87                for ( int i = 0; i < pbmi.cy; i++ )
88                {
89                    POINTL aptlPoints[4]={ 0, rcl.yTop-i-1, pbmi.cx, rcl.yTop-i, 0, i, pbmi.cx, i+1 };
90                    GpiDrawBits(hps, dptr, &pbmi, 4L,
91                                aptlPoints, ROP_SRCCOPY, BBO_IGNORE);
92                }
93
94                //GpiDrawBits(hps, out->getBitmap()->getDataPtr(), &pbmi, 4L,
95                //               aptlPoints, ROP_SRCCOPY, BBO_IGNORE);
96
97                WinEndPaint( hps );
98            }
99            break;
100    }
101    return WinDefWindowProc( hwnd, msg, mp1, mp2 );
102}
103
104
105
106void main( int argc, char *argv[] )
107{
108    PPIB pib;
109    PTIB tib;
110    DosGetInfoBlocks(&tib, &pib);
111    pib->pib_ultype = 3;
112
113    if ( argc < 2 )
114    {
115        printf("No file name given!\n");
116        return;
117    }
118
119    globalParams = new GlobalParams(".");
120
121    int err = pdfload(argv[1]);
122    if (err != errNone) {
123        printf("Error loading document!\n");
124        return;
125    }
126
127    HMQ   hmq;
128    QMSG  qmsg;
129    hab = WinInitialize( 0 );
130    hmq = WinCreateMsgQueue( hab, 0 );
131
132    // ‘®§€ âì £« ¢­®¥ ®ª­®
133    ULONG ulFrameFlags = FCF_TITLEBAR | FCF_SIZEBORDER | FCF_SYSMENU |
134                         FCF_MINMAX | FCF_TASKLIST | FCF_NOBYTEALIGN;
135    hWndFrame = WinCreateStdWindow( HWND_DESKTOP, 0, &ulFrameFlags, NULL, "test",
136                                    WS_SYNCPAINT|WS_VISIBLE, NULLHANDLE, 250, NULL );
137
138    WinRegisterClass( hab, "my.test", wndProc, CS_SIZEREDRAW, sizeof( ULONG ) * 2 );
139
140    // ¥¢š€š¬ë© 䚪ášà®¢ ­­ë© ᯫšââ¥à
141
142    //  ¡®ç¥¥ ®ª­® ¯à®£à ¬¬ë
143    hWndClient = WinCreateWindow( hWndFrame, "my.test", "",
144                                  WS_VISIBLE, 0, 0, 0, 0, hWndFrame,
145                                  HWND_TOP, FID_CLIENT, NULL, NULL );
146
147    // ®ª § âì ®ª­® ¯à®£à ¬¬ë
148    WinSetWindowPos( hWndFrame, HWND_TOP, 100, 100, 630, 400,
149                     SWP_SIZE | SWP_MOVE | SWP_SHOW | SWP_ACTIVATE );
150
151    // Messsage loop
152    while ( WinGetMsg( hab, &qmsg, 0, 0, 0 ) ) {
153        WinDispatchMsg( hab, &qmsg );
154    }
155
156    WinDestroyWindow( hWndFrame );
157    WinDestroyMsgQueue( hmq );
158    WinTerminate( hab );
159}
160
Note: See TracBrowser for help on using the repository browser.