Annotation of q_a/samples/world/world.c, revision 1.1

1.1     ! root        1: 
        !             2: /******************************************************************************\
        !             3: *       This is a part of the Microsoft Source Code Samples. 
        !             4: *       Copyright (C) 1993 Microsoft Corporation.
        !             5: *       All rights reserved. 
        !             6: *       This source code is only intended as a supplement to 
        !             7: *       Microsoft Development Tools and/or WinHelp documentation.
        !             8: *       See these sources for detailed information regarding the 
        !             9: *       Microsoft samples programs.
        !            10: \******************************************************************************/
        !            11: 
        !            12: /********************************************************************\
        !            13: *  world.c -- Sample program demonstrating scaling and translating   *
        !            14: *             an image from a metafile with World Coordinate         *
        !            15: *             Transforms.                                            *
        !            16: *                                                                    *
        !            17: *  Comments:                                                         *
        !            18: *                                                                    *
        !            19: *  The application loads the specified metafile. The user can        *
        !            20: *  scale the image through a menu option and translate it via        *
        !            21: *  the scrollbars and arrow keys.                                    *
        !            22: *                                                                    *
        !            23: *  Functions:                                                        *
        !            24: *                                                                    *
        !            25: *  WinMain()         - Initializes Application                       *
        !            26: *  MainWndProc()     - Processes Application Messages                *
        !            27: *  ScaleDlgProc()    - Processes "Scale Image" Dialog Box Messages   *
        !            28: *  AboutDlgProc()    - Processes "About" Dialog Box Messages         *
        !            29: *  OpenMetaFile()    - Gets Metafile name and opens the Metafile     *
        !            30: *  SetUnityXform()   - Helper routine which sets the unity transform *
        !            31: *                                                                    *
        !            32: *                                                                    *
        !            33: \********************************************************************/
        !            34: 
        !            35: 
        !            36: /*********************  Header Files  *********************/
        !            37: 
        !            38: #include <windows.h>
        !            39: #include <memory.h>
        !            40: #include <stdlib.h>
        !            41: #include "world.h"
        !            42: 
        !            43: 
        !            44: /**********************  Defines  *************************/
        !            45: 
        !            46: #define VSCROLLMAX  50
        !            47: #define HSCROLLMAX  50
        !            48: #define VERTSCALE   VSCROLLMAX/3
        !            49: #define HORZSCALE   HSCROLLMAX/3
        !            50: 
        !            51: #define LINEINC     1
        !            52: #define PAGEINC     4
        !            53: 
        !            54: #define FIRSTSTRING 0
        !            55: #define LASTSTRING  10
        !            56: #define MAXINPUT    10
        !            57: 
        !            58: /*********************  Prototypes  ***********************/
        !            59: 
        !            60: LRESULT CALLBACK MainWndProc( HWND, UINT, WPARAM, LPARAM );
        !            61: LRESULT CALLBACK AboutDlgProc( HWND, UINT, WPARAM, LPARAM );
        !            62: LRESULT CALLBACK ScaleDlgProc( HWND, UINT, WPARAM, LPARAM );
        !            63: BOOL OpenMetafile( HWND );
        !            64: void SetUnityXform( VOID );
        !            65: 
        !            66: /*******************  Global Variables ********************/
        !            67: 
        !            68: HANDLE ghInstance;
        !            69: 
        !            70: HENHMETAFILE hEMF;  /* Handle of metafile opened                  */
        !            71: XFORM xForm;        /* Transform to apply in SetWorldTransform()  */
        !            72: BOOL bFileOpen;     /* Logs if a metafile has been opened or not  */
        !            73: BOOL bFileJustOpen; /* Used to re-initialize "Scale Image" values */
        !            74: 
        !            75: /* Used for putting up File Open common dialog */
        !            76: 
        !            77: OPENFILENAME OpenFileName;
        !            78: CHAR szFile[MAX_PATH];
        !            79: CHAR szFileTitle[MAX_PATH];
        !            80: CHAR szFilter[] = "Metafile (*.EMF)\0*.emf\0All Files (*.*)\0*.*\0";
        !            81: 
        !            82: 
        !            83: /********************************************************************\
        !            84: *  Function: int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int)  *
        !            85: *                                                                    *
        !            86: *   Purpose: Initializes Application                                 *
        !            87: *                                                                    *
        !            88: *  Comments: Standard template                                       *
        !            89: *                                                                    *
        !            90: *                                                                    *
        !            91: \********************************************************************/
        !            92: 
        !            93: 
        !            94: int APIENTRY WinMain( HINSTANCE hInstance,
        !            95:                       HINSTANCE hPrevInstance,
        !            96:                       LPSTR lpszCmdLine,
        !            97:                       int nCmdShow )
        !            98: {
        !            99:    WNDCLASS wc;
        !           100:    MSG msg;
        !           101:    HWND hWnd;
        !           102: 
        !           103:    if( !hPrevInstance ) {
        !           104:       wc.lpszClassName = "WorldClass";
        !           105:       wc.lpfnWndProc = MainWndProc;
        !           106:       wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
        !           107:       wc.hInstance = hInstance;
        !           108:       wc.hIcon = LoadIcon( hInstance, "WorldIcon" );
        !           109:       wc.hCursor = LoadCursor( NULL, IDC_ARROW );
        !           110:       wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+1 );
        !           111:       wc.lpszMenuName = "WorldMenu";
        !           112:       wc.cbClsExtra = 0;
        !           113:       wc.cbWndExtra = 0;
        !           114: 
        !           115:       RegisterClass( &wc );
        !           116:    }
        !           117: 
        !           118:    ghInstance = hInstance;
        !           119: 
        !           120:    hWnd = CreateWindow( "WorldClass",
        !           121:                         "World Coordinate Transforms",
        !           122:                         WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,
        !           123:                         0,
        !           124:                         0,
        !           125:                         CW_USEDEFAULT,
        !           126:                         CW_USEDEFAULT,
        !           127:                         NULL,
        !           128:                         NULL,
        !           129:                         hInstance,
        !           130:                         NULL
        !           131:                       );
        !           132: 
        !           133:    ShowWindow( hWnd, nCmdShow );
        !           134: 
        !           135:    while( GetMessage( &msg, NULL, 0, 0 ) ) {
        !           136:       TranslateMessage( &msg );
        !           137:       DispatchMessage( &msg );
        !           138:    }
        !           139: 
        !           140:    return msg.wParam;
        !           141: }
        !           142: 
        !           143: 
        !           144: /********************************************************************\
        !           145: * Function: LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM) *
        !           146: *                                                                    *
        !           147: *  Purpose: Processes Application Messages                           *
        !           148: *                                                                    *
        !           149: * Comments: The following messages are processed                     *
        !           150: *                                                                    *
        !           151: *           WM_CREATE                                                *
        !           152: *           WM_HSCROLL                                               *
        !           153: *           WM_VSCROLL                                               *
        !           154: *           WM_KEYDOWN                                               *
        !           155: *           WM_PAINT                                                 *
        !           156: *           WM_COMMAND                                               *
        !           157: *           WM_DESTROY                                               *
        !           158: *                                                                    *
        !           159: *                                                                    *
        !           160: \********************************************************************/
        !           161: 
        !           162: 
        !           163: LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam,
        !           164:    LPARAM lParam )
        !           165: {
        !           166:    static int nVscrollPos, nHscrollPos;
        !           167:    int nVscrollInc, nHscrollInc;
        !           168:    RECT rect;
        !           169:    PAINTSTRUCT ps;
        !           170:    HDC hDC;
        !           171: 
        !           172:    switch( msg ) {
        !           173: 
        !           174: /**************************************************************\
        !           175: *     WM_CREATE: The scrollbar range is set. Global variables  *
        !           176: *        are initialized. The new API SetGraphicsMode() must   *
        !           177: *        be called before SetWorldCoordinates() can be called  *
        !           178: *        in the WM_PAINT case.                                 *
        !           179: \**************************************************************/
        !           180: 
        !           181:       case WM_CREATE:
        !           182: 
        !           183:          SetScrollRange( hWnd, SB_HORZ, 0, HSCROLLMAX, FALSE );
        !           184:          SetScrollRange( hWnd, SB_VERT, 0, VSCROLLMAX, FALSE );
        !           185: 
        !           186:          bFileOpen = FALSE;
        !           187:          bFileJustOpen = FALSE;
        !           188: 
        !           189:          hDC = GetDC( hWnd );
        !           190:          SetGraphicsMode( hDC, GM_ADVANCED );
        !           191:          ReleaseDC( hWnd, hDC );
        !           192: 
        !           193:          break;
        !           194: 
        !           195: /**************************************************************\
        !           196: *     WM_HSCROLL: Standard template, except that instead of    *
        !           197: *        calling ScrollWindow(), the transform is updated.     *
        !           198: \**************************************************************/
        !           199: 
        !           200:       case WM_HSCROLL:
        !           201:          switch( wParam ) {
        !           202:             case SB_LINEUP:
        !           203:                nHscrollInc = -LINEINC;
        !           204:                break;
        !           205:             case SB_LINEDOWN:
        !           206:                nHscrollInc = LINEINC;
        !           207:                break;
        !           208:             case SB_PAGEUP:
        !           209:                nHscrollInc = -PAGEINC;
        !           210:                break;
        !           211:             case SB_PAGEDOWN:
        !           212:                nHscrollInc = PAGEINC;
        !           213:                break;
        !           214:             case SB_THUMBPOSITION:
        !           215:                nHscrollInc = HIWORD(wParam) - nHscrollPos;
        !           216:                break;
        !           217:             default:
        !           218:                nHscrollInc = 0;
        !           219:          }
        !           220:          if(nHscrollInc=max(-nHscrollPos,min(nHscrollInc,HSCROLLMAX-
        !           221:                nHscrollPos))) {
        !           222:             nHscrollPos += nHscrollInc;
        !           223:             SetScrollPos( hWnd, SB_HORZ, nHscrollPos, TRUE );
        !           224: 
        !           225:             xForm.eDx += (FLOAT) (nHscrollInc * HORZSCALE);
        !           226:             InvalidateRect( hWnd, NULL, TRUE );
        !           227:          }
        !           228:          return 0;
        !           229: 
        !           230: /**************************************************************\
        !           231: *     WM_VSCROLL: Standard template, except that instead of    *
        !           232: *        calling ScrollWindow(), the transform is updated.*    *
        !           233: \**************************************************************/
        !           234: 
        !           235:       case WM_VSCROLL:
        !           236:          switch( wParam ) {
        !           237:             case SB_TOP:
        !           238:                nVscrollInc = -nVscrollPos;
        !           239:                break;
        !           240:             case SB_BOTTOM:
        !           241:                nVscrollInc = VSCROLLMAX - nVscrollPos;
        !           242:                break;
        !           243:             case SB_LINEUP:
        !           244:                nVscrollInc = -LINEINC;
        !           245:                break;
        !           246:             case SB_LINEDOWN:
        !           247:                nVscrollInc = LINEINC;
        !           248:                break;
        !           249:             case SB_PAGEUP:
        !           250:                nVscrollInc = -PAGEINC;
        !           251:                break;
        !           252:             case SB_PAGEDOWN:
        !           253:                nVscrollInc = PAGEINC;
        !           254:                break;
        !           255:             case SB_THUMBTRACK:
        !           256:                nVscrollInc = HIWORD(wParam) - nVscrollPos;
        !           257:                break;
        !           258:             default:
        !           259:                nVscrollInc = 0;
        !           260:          }
        !           261:          if(nVscrollInc=max(-nVscrollPos,min(nVscrollInc,VSCROLLMAX-
        !           262:                nVscrollPos))) {
        !           263:             nVscrollPos += nVscrollInc;
        !           264:             SetScrollPos( hWnd, SB_VERT, nVscrollPos, TRUE );
        !           265: 
        !           266:             xForm.eDy += (FLOAT) (nVscrollInc * VERTSCALE);
        !           267:             InvalidateRect( hWnd, NULL, TRUE );
        !           268:          }
        !           269:          return 0;
        !           270: 
        !           271: /**************************************************************\
        !           272: *     WM_KEYDOWN: Standard template                            *
        !           273: \**************************************************************/
        !           274: 
        !           275:       case WM_KEYDOWN:
        !           276:          switch( wParam ) {
        !           277:             case VK_UP:
        !           278:                SendMessage( hWnd, WM_VSCROLL, SB_LINEUP, 0L );
        !           279:                break;
        !           280:             case VK_DOWN:
        !           281:                SendMessage( hWnd, WM_VSCROLL, SB_LINEDOWN, 0L );
        !           282:                break;
        !           283:             case VK_LEFT:
        !           284:                SendMessage( hWnd, WM_HSCROLL, SB_LINEUP, 0L );
        !           285:                break;
        !           286:             case VK_RIGHT:
        !           287:                SendMessage( hWnd, WM_HSCROLL, SB_LINEDOWN, 0L );
        !           288:                break;
        !           289:             case VK_PRIOR:
        !           290:                SendMessage( hWnd, WM_VSCROLL, SB_PAGEUP, 0L );
        !           291:                break;
        !           292:             case VK_NEXT:
        !           293:                SendMessage( hWnd, WM_VSCROLL, SB_PAGEDOWN, 0L );
        !           294:                break;
        !           295:          }
        !           296:          return 0;
        !           297: 
        !           298: /**************************************************************\
        !           299: *     WM_PAINT: If a Metafile has been opened, the transform   *
        !           300: *        is applied using SetWorldTransform() and the Metafile *
        !           301: *        is displayed using PlayEnhMetaFile().                 *
        !           302: \**************************************************************/
        !           303: 
        !           304:       case WM_PAINT:
        !           305:          hDC = BeginPaint( hWnd, &ps );
        !           306: 
        !           307:          if( bFileOpen ) {
        !           308:             GetClientRect( hWnd, &rect );
        !           309:             SetWorldTransform( hDC, &xForm );
        !           310:             PlayEnhMetaFile( hDC, hEMF, &rect );
        !           311:          }
        !           312: 
        !           313:          EndPaint( hWnd, &ps );
        !           314:          break;
        !           315: 
        !           316: /**************************************************************\
        !           317: *     WM_COMMAND: If Metafile.Open is selected, OpenMetafile   *
        !           318: *        and InvalidateRect() are called and the thumb         *
        !           319: *        position is centered. If Metafile.Exit is selected,   *
        !           320: *        a WM_CLOSE message is sent. If Scale is chosen, then  *
        !           321: *        the "Scale Image" dialog is displayed; if the user    *
        !           322: *        choses OK, then InvalidateRect() is called. If        *
        !           323: *        Help.About is chosen, then the "About" dialog box is  *
        !           324: *        displayed.                                            *
        !           325: \**************************************************************/
        !           326: 
        !           327:       case WM_COMMAND:
        !           328:          switch( wParam ) {
        !           329:             case IDM_OPEN:
        !           330:                if( OpenMetafile( hWnd ) ) {
        !           331:                   SetWindowText( hWnd, OpenFileName.lpstrFile );
        !           332:                   SetUnityXform( ); 
        !           333:                   nHscrollPos = HSCROLLMAX/2;
        !           334:                   nVscrollPos = VSCROLLMAX/2;
        !           335:                   SetScrollPos( hWnd, SB_HORZ, nHscrollPos, TRUE );
        !           336:                   SetScrollPos( hWnd, SB_VERT, nVscrollPos, TRUE );
        !           337: 
        !           338:                   InvalidateRect( hWnd, NULL, TRUE );
        !           339:                }
        !           340:                break;
        !           341:             case IDM_EXIT:
        !           342:                SendMessage( hWnd, WM_CLOSE, 0, 0 );
        !           343:                break;
        !           344:             case IDM_SCALE:
        !           345:                if( DialogBox( ghInstance, "ScaleDlg", hWnd,                
        !           346:                      (DLGPROC) ScaleDlgProc ) )
        !           347:                   InvalidateRect( hWnd, NULL, TRUE );
        !           348:                break;
        !           349:             case IDM_ABOUT:
        !           350:                DialogBox( ghInstance, "AboutDlg", hWnd, (DLGPROC)  
        !           351:                              AboutDlgProc );
        !           352:                break;
        !           353:          }
        !           354:          break;
        !           355: 
        !           356: /**************************************************************\
        !           357: *     WM_DESTROY: PostQuitMessage() is called                  *
        !           358: \**************************************************************/
        !           359: 
        !           360:       case WM_DESTROY:
        !           361:          PostQuitMessage( 0 );
        !           362:          break;
        !           363: 
        !           364: /**************************************************************\
        !           365: *     Let the default window proc handle all other messages    *
        !           366: \**************************************************************/
        !           367: 
        !           368:       default:
        !           369:          return( DefWindowProc( hWnd, msg, wParam, lParam ));
        !           370:    }
        !           371: 
        !           372:    return 0;
        !           373: }
        !           374: 
        !           375: 
        !           376: /********************************************************************\
        !           377: * Function: LRESULT CALLBACK ScaleDlgProc(HWND, UINT, WPARAM, LPARAM)*
        !           378: *                                                                    *
        !           379: *  Purpose: Processes "Scale Image" Dialog Box Messages.             *
        !           380: *                                                                    *
        !           381: * Comments: The following messages are processed:                    *
        !           382: *                                                                    *
        !           383: *           WM_INITDIALOG                                            *
        !           384: *           WM_COMMAND                                               *
        !           385: *                                                                    *
        !           386: \********************************************************************/
        !           387: 
        !           388: 
        !           389: LRESULT CALLBACK ScaleDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
        !           390: {
        !           391:    char buffer[MAXINPUT];
        !           392:    static char HorzInputBuf[MAXINPUT];
        !           393:    static char VertInputBuf[MAXINPUT];
        !           394:    int index;
        !           395: 
        !           396:    switch( uMsg ) {
        !           397: 
        !           398: /**************************************************************\
        !           399: *     WM_INITDIALOG: Strings representing the possible scale   *
        !           400: *        factors are loaded into the comboboxes. The current   *
        !           401: *        selection is indicated.                               *
        !           402: \**************************************************************/
        !           403: 
        !           404:       case WM_INITDIALOG:
        !           405:          for( index=FIRSTSTRING; index <= LASTSTRING; index++ ) {
        !           406:             LoadString( GetModuleHandle(NULL), index, buffer, MAXINPUT);
        !           407:             SendDlgItemMessage( hDlg, IDC_HORZ, CB_ADDSTRING, 0, 
        !           408:                                  (LPARAM)buffer );
        !           409:             SendDlgItemMessage( hDlg, IDC_VERT, CB_ADDSTRING, 0, 
        !           410:                                  (LPARAM)buffer );
        !           411:          }
        !           412: 
        !           413:          if( bFileJustOpen || !bFileOpen ) {
        !           414:             lstrcpy( HorzInputBuf, " 1.0" );
        !           415:             lstrcpy( VertInputBuf, " 1.0" );
        !           416:             bFileJustOpen = FALSE;
        !           417:          } 
        !           418: 
        !           419:          SendDlgItemMessage( hDlg, IDC_HORZ, CB_SELECTSTRING, 0,  
        !           420:                               (LPARAM)HorzInputBuf );
        !           421:          SendDlgItemMessage( hDlg, IDC_VERT, CB_SELECTSTRING, 0, 
        !           422:                               (LPARAM)VertInputBuf );
        !           423:          return TRUE;
        !           424: 
        !           425: /**************************************************************\
        !           426: *     WM_COMMAND: If the OK button is selected, the current    *
        !           427: *        horizontal and vertical scaling factors are obtained  *
        !           428: *        from the ComboBox and the transform is updated. If    *
        !           429: *        the CANCEL button is selected, EndDialog() is called. *
        !           430: \**************************************************************/
        !           431: 
        !           432:       case WM_COMMAND:
        !           433:          switch( wParam ) {
        !           434:             case IDOK:
        !           435:                index = SendDlgItemMessage( hDlg, IDC_HORZ, CB_GETCURSEL, 
        !           436:                                             0, 0 );
        !           437:                LoadString( GetModuleHandle(NULL), index, HorzInputBuf, 
        !           438:                             MAXINPUT );
        !           439:                xForm.eM11 = (FLOAT) atof( HorzInputBuf );
        !           440: 
        !           441:                index = SendDlgItemMessage( hDlg, IDC_VERT, CB_GETCURSEL, 
        !           442:                                             0, 0 );
        !           443:                LoadString( GetModuleHandle(NULL), index, VertInputBuf, 
        !           444:                             MAXINPUT );
        !           445:                xForm.eM22 = (FLOAT) atof( VertInputBuf );
        !           446: 
        !           447:                EndDialog( hDlg, TRUE );
        !           448:                return TRUE;
        !           449:             case IDCANCEL:
        !           450:                EndDialog( hDlg, FALSE );
        !           451:                return TRUE;
        !           452:          }
        !           453:          break;
        !           454:    }
        !           455: 
        !           456:    return FALSE;
        !           457: }
        !           458: 
        !           459: 
        !           460: /********************************************************************\
        !           461: * Function: LRESULT CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM)*
        !           462: *                                                                    *
        !           463: *  Purpose: Processes "About" Dialog Box Messages                    *
        !           464: *                                                                    *
        !           465: * Comments: The Dialog Box is displayed when the user selects        *
        !           466: *           Help.About.                                              *
        !           467: *                                                                    *
        !           468: \********************************************************************/
        !           469: 
        !           470: 
        !           471: LRESULT CALLBACK AboutDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
        !           472: {
        !           473:    switch( uMsg ) {
        !           474:       case WM_INITDIALOG:
        !           475:          return TRUE;
        !           476:       case WM_COMMAND:
        !           477:          switch( wParam ) {
        !           478:             case IDOK:
        !           479:                EndDialog( hDlg, TRUE );
        !           480:                return TRUE;
        !           481:          }
        !           482:       break;
        !           483:    }
        !           484: 
        !           485:    return FALSE;
        !           486: }
        !           487: 
        !           488: 
        !           489: /********************************************************************\
        !           490: * Function: BOOL OpenMetafile( HWND )                                *
        !           491: *                                                                    *
        !           492: *  Purpose: Gets Metafile name and opens the Metafile                *
        !           493: *                                                                    *
        !           494: * Comments: Uses the Common Dialog GetOpenFileName() to prompt user  *
        !           495: *           for the name of the Metafile to be opened.  If the name  *
        !           496: *           is successfully retrieved, GetEnhMetaFile() is used to   *
        !           497: *           open the Metafile.                                       *
        !           498: *                                                                    *
        !           499: \********************************************************************/
        !           500: 
        !           501: 
        !           502: BOOL OpenMetafile( HWND hWnd )
        !           503: {
        !           504:    szFile[0] = '\0';
        !           505:    szFileTitle[0] = '\0';
        !           506:    memset( (LPVOID) &OpenFileName, 0, sizeof( OPENFILENAME ));
        !           507: 
        !           508:    OpenFileName.lStructSize = sizeof( OPENFILENAME );
        !           509:    OpenFileName.hwndOwner = hWnd;
        !           510:    OpenFileName.lpstrFilter = szFilter;
        !           511:    OpenFileName.lpstrCustomFilter = (LPSTR) NULL;
        !           512:    OpenFileName.nMaxCustFilter = 0L;
        !           513:    OpenFileName.nFilterIndex = 1L;
        !           514:    OpenFileName.lpstrFile = szFile;
        !           515:    OpenFileName.nMaxFile = sizeof( szFile );
        !           516:    OpenFileName.lpstrFileTitle = szFileTitle;
        !           517:    OpenFileName.nMaxFileTitle = sizeof( szFileTitle );
        !           518:    OpenFileName.lpstrInitialDir = NULL;
        !           519:    OpenFileName.lpstrTitle = "Open Metafile";
        !           520:    OpenFileName.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
        !           521:    OpenFileName.nFileOffset = 0;
        !           522:    OpenFileName.nFileExtension = 0;
        !           523:    OpenFileName.lpstrDefExt = "*.EMF";
        !           524: 
        !           525:    if( !GetOpenFileName( &OpenFileName ) )
        !           526:       return FALSE;
        !           527: 
        !           528:    hEMF = GetEnhMetaFile( OpenFileName.lpstrFile );
        !           529:    bFileOpen = TRUE;
        !           530:    bFileJustOpen = TRUE;
        !           531: 
        !           532:    return TRUE;
        !           533: }
        !           534: 
        !           535: 
        !           536: /********************************************************************\
        !           537: * Function: void SetUnityXform( VOID )                               *
        !           538: *                                                                    *
        !           539: *  Purpose: Helper routine which sets the unity transform            *
        !           540: *                                                                    *
        !           541: * Comments: These fields have the following use in this application: *
        !           542: *                                                                    *
        !           543: *                  eM11: Horizontal Scaling Factor                   *
        !           544: *                  eM12: Not Used                                    *
        !           545: *                  eM21: Not Used                                    *
        !           546: *                  eM22: Vertical Scaling Factor                     *
        !           547: *                  eDx: Horizontal Translation                       *
        !           548: *                  eDy: Vertical Translation                         *
        !           549: *                                                                    *
        !           550: \********************************************************************/
        !           551: 
        !           552: 
        !           553: void SetUnityXform( )
        !           554: {
        !           555:    xForm.eM11 = (FLOAT) 1.0;
        !           556:    xForm.eM12 = (FLOAT) 0.0;
        !           557:    xForm.eM21 = (FLOAT) 0.0;
        !           558:    xForm.eM22 = (FLOAT) 1.0;
        !           559:    xForm.eDx  = (FLOAT) 0.0;
        !           560:    xForm.eDy  = (FLOAT) 0.0;
        !           561: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.