Changeset 93


Ignore:
Timestamp:
Aug 6, 2006, 5:11:51 PM (15 years ago)
Author:
Eugene Romanenko
Message:

basic printing, postscript and bitmap

Location:
trunk/Lucide
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/BIN/Lucide_de.lng

    r91 r93  
    77#
    88MENU_DOCUMENT=~Dokument
    9 MENU_OPEN=™ffnen...\tStrg+O
    10 MENU_SAVE_AS=Sichern unter...
    11 MENU_PAGE_SETUP=Seiteneinrichtung...
    12 MENU_PRINT=Drucken...
    13 MENU_DOCUMENT_INFO=Dokumentinformationen...
    14 MENU_FONTS_INFO=Schrifteninformation...
    15 MENU_PLUGINS_LIST=Plugin-Liste...
    16 MENU_EXIT=Beenden\tStrg+X
     9MENU_OPEN=~™ffnen...\tStrg+O
     10MENU_SAVE_AS=~Sichern unter...
     11MENU_PAGE_SETUP=Seitenein~richtung...
     12MENU_PRINT=~Drucken...
     13MENU_DOCUMENT_INFO=Do~kumentinformationen...
     14MENU_FONTS_INFO=Schr~ifteninformation...
     15MENU_PLUGINS_LIST=Plugin-~Liste...
     16MENU_EXIT=B~eenden\tStrg+X
    1717MENU_EDIT=~Bearbeiten
    18 MENU_COPY=Kopieren\tStrg+Einfg
    19 MENU_SELECT_ALL=Alles markieren\tStrg+/
    20 MENU_FIND=Suchen...\tStrg+F
    21 MENU_FINDAGAIN=Weitersuchen\tStrg+G
    22 MENU_SETTINGS=Einstellungen...
    23 MENU_FIRST_PAGE=Erste Seite
    24 MENU_PREV_PAGE=Vorige Seite\t-
    25 MENU_NEXT_PAGE=N„chste Seite\t+
    26 MENU_LAST_PAGE=Letzte Seite
    27 MENU_GO_TO_PAGE=Gehe zu Seite...\tStrg+N
     18MENU_COPY=~Kopieren\tStrg+Einfg
     19MENU_SELECT_ALL=Alles ~markieren\tStrg+/
     20MENU_FIND=~Suchen...\tStrg+F
     21MENU_FINDAGAIN=~Weitersuchen\tStrg+G
     22MENU_SETTINGS=~Einstellungen...
     23MENU_FIRST_PAGE=~Erste Seite
     24MENU_PREV_PAGE=~Vorige Seite\t-
     25MENU_NEXT_PAGE=~N„chste Seite\t+
     26MENU_LAST_PAGE=~Letzte Seite
     27MENU_GO_TO_PAGE=Gehe zu ~Seite...\tStrg+N
    2828MENU_VIEW=~Anzeige
    29 MENU_FIT_WINDOW=Ganze Seite
    30 MENU_ACTUAL_SIZE=Originalgr”áe
    31 MENU_FIT_WIDTH=Seitenbreite
    32 MENU_ROTATE_CW=90ø im UZS drehen
    33 MENU_ROTATE_CCW=90ø gegen UZS drehen
    34 MENU_SHOW_NAV_PANE=Navigator anzeigen
    35 MENU_SINGLE_PAGE=Einzelne Seite
    36 MENU_CONTINUOUS=Fortlaufend
     29MENU_FIT_WINDOW=~Ganze Seite
     30MENU_ACTUAL_SIZE=~Originalgr”áe
     31MENU_FIT_WIDTH=Seiten~breite
     32MENU_ROTATE_CW=90ø im UZS ~drehen
     33MENU_ROTATE_CCW=90ø gegen ~UZS drehen
     34MENU_SHOW_NAV_PANE=~Navigator anzeigen
     35MENU_SINGLE_PAGE=Einzelne Sei~te
     36MENU_CONTINUOUS=~Fortlaufend
    3737MENU_WINDOW=~Fenster
    3838MENU_MAXVIEW=~Maximiert\tF11
    3939MENU_FULLSCREEN=~Vollbild\tStrg+L
    4040MENU_HELP=~Hilfe
    41 MENU_PRODUCT_INFORMATION=Produktinformation
     41MENU_PRODUCT_INFORMATION=~Produktinformation
    4242
    4343#
     
    6565MSGS_NO_SUIT_PLUG=Kein passendes Plugin fr das Dokument gefunden!
    6666MSGS_FILE_LOAD_ERROR=Datei kann nicht gelesen werden!
    67 MSGS_LOADING_DOCUMENT=Lese Dokument, bitte warten...
     67MSGS_LOADING_DOCUMENT=™ffne Dokument, bitte warten...
    6868MSGS_WARNING=Warnung!
    6969MSGS_OVERWRITE_FILE=Datei existiert bereits. šberschreiben?
     
    7474#
    7575PLUGLIST_PLUGINS_LIST=Plugin-Liste
    76 PLUGLIST_CLOSE=Schliessen
     76PLUGLIST_CLOSE=S~chliessen
    7777# List columns titles
    7878PLUGLIST_PLUGIN_NAME=Plugin-Name
     
    8484#
    8585FONTINFO_FONTINFO=Schrifteninformation
    86 FONTINFO_CLOSE=Schliessen
     86FONTINFO_CLOSE=S~chliessen
    8787FONTINFO_ENUMERATING=Z„hle Schriften, bitte warten...
    8888# List columns titles
     
    9595#
    9696DOCINFO_DOCUMENT_INFO=Dokumentinformationen
    97 DOCINFO_CLOSE=Schliessen
     97DOCINFO_CLOSE=S~chliessen
    9898# Document info keys
    9999DOCINFO_TITLE=Titel:
     
    131131AD_DESCRIPTION=Plugin-basierender Dokumentviewer mit Untersttzung zahlreicher Dateiformate
    132132AD_COPYRIGHTS=(c) by Eugene Romanenko, netlabs.org in Zusammenarbeit mit Serenity Systems International
    133 AD_OK=OK
     133AD_OK=~OK
    134134
    135135#
     
    137137#
    138138SD_SETTINGS=Einstellungen
    139 SD_DEFAULT_PAGE_LAYOUT=Standard Seitenlayout
    140 SD_DEFAULT_ZOOM=Standard-Zoom
     139SD_DEFAULT_PAGE_LAYOUT=Standard ~Seitenlayout
     140SD_DEFAULT_ZOOM=Standard-~Zoom
     141SD_SINGLE_PAGE=Einzelne Seite
     142SD_CONTINUOUS=Fortlaufend
    141143SD_OK=~OK
    142144SD_CANCEL=~Abbruch
     
    151153GTP_CANCEL=~Abbruch
    152154
     155#
     156# Print dialog
     157#
     158PD_TITLE=Drucken
     159PD_PRINTER=Drucker
     160PD_NAME_LABEL=~Name
     161PD_JOB_PROPERTIES=~Job-Eigenschaften
     162PD_DRIVER_LABEL=Treiber
     163PD_PRINT_RANGE=D~ruckbereich
     164PD_RANGE_ALL=A~lles
     165PD_RANGE_CURRENT_PAGE=A~ktuelle Seite
     166PD_RANGE_PAGES=Sei~ten
     167PD_FROM=~Von
     168PD_TO=B~is
     169PD_PRINT_TYPE=Druckformat
     170PD_TYPE_POSTSCRIPT=Post~script
     171PD_TYPE_ASIMAGE=Als ~Bild
     172PD_HIGHER_IMAGE_QUALITY=~H”here Bildqualit„t (langsamer, ben”tigt mehr Speicher)
     173PD_BTNPRINT=~Drucken
     174PD_BTNCANCEL=~Abbruch
     175# other 'print'-related messages
     176PRINT_PRINTING_PAGE_OF=Drucke Seite %d von %d...
     177PRINT_GENERATING_POSTSCRIPT=Erzeuge Postscript-Datei...
     178PRINT_SPOOLING_POSTSCRIPT=Sende Postscript-Daten...
     179PRINT_FAILED=Drucken fehlgeschlagen!
    153180
  • trunk/Lucide/SOURCE/gui/Lucide_res.H

    r90 r93  
    139139#define IDC_LABELTO         18
    140140#define IDC_PGTO            19
    141 #define IDC_TYPE_POSTSCRIPT     20
     141#define IDC_TYPE_POSTSCRIPT     201
    142142#define IDC_TYPE_ASIMAGE        21
    143143#define IDC_HIGHER_IMAGE_QUALITY        22
  • trunk/Lucide/SOURCE/gui/print.cpp

    r92 r93  
    6161}
    6262
     63#ifndef DEVESC_ERROR
     64#define DEVESC_ERROR        (-1L)
     65#endif
     66
    6367#define UNITS_MULTIPLIER    100
    6468#define STD_IMAGE_ZOOM      2.0
     
    267271
    268272
    269 
    270273bool LucidePrinting::doPsPrint( HAB lhab )
    271274{
     
    301304    strcat( tmpps, "TMPLUCID.PS" );
    302305
    303     BOOL rc = doc->exportToPostScript( ev, tmpps, psetup->pgfrom-1, psetup->pgto-1,
    304                                        pwidth, pheight, false, &abortPrinting );
     306    boolean rcexp = doc->exportToPostScript( ev, tmpps, psetup->pgfrom-1, psetup->pgto-1,
     307                                             pwidth, pheight, false, &abortPrinting );
    305308
    306309    if ( abortPrinting ) {
     
    308311        return true;
    309312    }
    310     if ( !rc ) {
     313    if ( !rcexp ) {
    311314        unlink( tmpps );
    312315        return false;
     
    317320    delete spooling_ps;
    318321
    319     // build a devopenstruct for the call to SplQmOpen
     322    // build a devopenstruct for the call to DevOpenDC
    320323    dos.pszLogAddress = psetup->QueueInfo.pszName;              // 1
    321324    strcpy( achDriverName, psetup->QueueInfo.pszDriverName );
     
    325328    dos.pszDataType   = "PM_Q_RAW";                             // 4
    326329
    327     HSPL hspl = SplQmOpen( "*", 4L, (PQMOPENDATA)&dos );
    328     if ( hspl == SPL_ERROR ) {
     330    HDC hdcPrinter = DevOpenDC( lhab, OD_QUEUED, "*", 4L, (PDEVOPENDATA)&dos, NULLHANDLE );
     331    if ( hdcPrinter == DEV_ERROR ) {
    329332        unlink( tmpps );
    330333        return false;
    331334    }
    332335
    333     rc = SplQmStartDoc( hspl, title );
    334     if ( !rc ) {
    335         SplQmAbort( hspl );
     336    // Issue STARTDOC to begin printing
     337    LONG rc = DevEscape( hdcPrinter, DEVESC_STARTDOC, strlen(title), (PBYTE)title, NULL, NULL );
     338    if ( rc == DEVESC_ERROR ) {
     339        DevCloseDC( hdcPrinter );
    336340        unlink( tmpps );
    337341        return false;
     
    340344    FILE *f = fopen( tmpps, "rb" );
    341345    if ( f == NULL ) {
    342         SplQmAbort( hspl );
     346        DevEscape( hdcPrinter, DEVESC_ABORTDOC, 0L, NULL, NULL, NULL );
     347        DevCloseDC( hdcPrinter );
    343348        unlink( tmpps );
    344349        return false;
     
    346351
    347352    bool splerr = false;
    348     char *pcl_prolog = "\x1b%-12345X@PJL JOB\n@PJL ENTER LANGUAGE = POSTSCRIPT \n";
    349     char *pcl_epilog = "\x1b%-12345X@PJL EOJ\n";
    350 
    351     if ( !( rc = SplQmWrite( hspl, strlen( pcl_prolog ), pcl_prolog ) ) ) {
    352         splerr = true;
    353     }
    354 
    355353    void *buf = malloc( PS_PRINT_BUF_SIZE );
    356354    int rd = 0;
    357     while ( rc && ( rd = fread( buf, 1, PS_PRINT_BUF_SIZE, f ) ) != 0 ) {
    358         rc = SplQmWrite( hspl, rd, buf );
    359         if ( !rc || abortPrinting ) {
     355    while ( ( rc != DEVESC_ERROR ) && ( rd = fread( buf, 1, PS_PRINT_BUF_SIZE, f ) ) != 0 )
     356    {
     357        rc = DevEscape( hdcPrinter, DEVESC_RAWDATA, rd, (char *)buf, NULL, NULL );
     358        if ( ( rc == DEVESC_ERROR ) || abortPrinting ) {
    360359            splerr = true;
    361360            break;
     
    366365    unlink( tmpps );
    367366
    368     if ( !splerr ) {
    369         if ( !( rc = SplQmWrite( hspl, strlen( pcl_epilog ), pcl_epilog ) ) ) {
    370             splerr = true;
    371         }
    372     }
    373 
    374     if ( splerr ) {
    375         SplQmAbort( hspl );
    376         if ( !abortPrinting ) {
    377             return false;
    378         }
    379     }
    380     else {
    381         SplQmEndDoc( hspl );
    382         SplQmClose( hspl );
     367    DevEscape( hdcPrinter, splerr ? DEVESC_ABORTDOC : DEVESC_ENDDOC,
     368               0L, NULL, NULL, NULL );
     369    DevCloseDC( hdcPrinter );
     370
     371    if ( splerr && !abortPrinting ) {
     372        return false;
    383373    }
    384374
    385375    return true;
    386376}
     377
    387378
    388379bool LucidePrinting::queryCurrentForm( HAB lhab, PHCINFO pcurForm )
  • trunk/Lucide/SOURCE/gui/printDlg.cpp

    r91 r93  
    8080    WinEnableControl( hwnd, IDC_JOBPROPERTIES, TRUE );
    8181    WinEnableControl( hwnd, DID_OK, TRUE );
     82
     83    // Set the print type
     84    if ( doc->isPostScriptExportable( ev ) && isPostscriptDevice() ) {
     85        WinEnableControl( hwnd, IDC_TYPE_POSTSCRIPT, TRUE );
     86        WinCheckButton( hwnd, IDC_TYPE_POSTSCRIPT, TRUE );
     87    }
     88    else {
     89        WinEnableControl( hwnd, IDC_TYPE_POSTSCRIPT, FALSE );
     90        WinCheckButton( hwnd, IDC_TYPE_ASIMAGE, TRUE );
     91    }
     92
     93    WinSendMsg( hwnd, WM_CONTROL,
     94                MPFROM2SHORT( IDC_TYPE_POSTSCRIPT, BN_CLICKED ),
     95                MPFROMHWND( WinWindowFromID( hwnd, IDC_TYPE_POSTSCRIPT ) ) );
    8296}
    8397
     
    155169}
    156170
     171bool PrintDlg::isPostscriptDevice()
     172{
     173    char *achDriverName = new char[ DRIVERNAME_LENGTH ];
     174
     175    // build a devopenstruct for the call to DevOpenDC
     176    DEVOPENSTRUC *dos   = new DEVOPENSTRUC;
     177    memset( dos, 0, sizeof( DEVOPENSTRUC ) );
     178    dos->pszLogAddress = psetup->QueueInfo.pszName;              // 1
     179    strcpy( achDriverName, psetup->QueueInfo.pszDriverName );
     180    achDriverName[ strcspn( achDriverName, "." ) ] = '\0';
     181    dos->pszDriverName = achDriverName;                          // 2
     182    dos->pdriv = psetup->QueueInfo.pDriverData;                  // 3
     183
     184    long lTech = 0;
     185    HDC hdcPrinterInfo = DevOpenDC( hab, OD_INFO, "*", 3L, (PDEVOPENDATA)dos, NULLHANDLE );
     186    if ( hdcPrinterInfo != DEV_ERROR ) {
     187        DevQueryCaps( hdcPrinterInfo, CAPS_TECHNOLOGY, sizeof(long), &lTech );
     188        DevCloseDC( hdcPrinterInfo );
     189    }
     190
     191    delete achDriverName;
     192    delete dos;
     193    return ( lTech == CAPS_TECH_POSTSCRIPT );
     194}
    157195
    158196MRESULT EXPENTRY PrintDlg::printDlgProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
     
    176214            localizeDialog( hwnd );
    177215            centerWindow( _this->hFrame, hwnd );
    178 
    179             // Enum printer queues
    180             _this->enumQueues( hwnd );
    181216
    182217            // Print range
     
    194229                               MPFROMLONG( pages ), MPVOID );
    195230
    196             // Set the print type
    197             if ( _this->doc->isPostScriptExportable( ev ) ) {
    198                 WinEnableControl( hwnd, IDC_TYPE_POSTSCRIPT, TRUE );
    199                 WinCheckButton( hwnd, IDC_TYPE_POSTSCRIPT, TRUE );
    200             }
    201             else {
    202                 WinEnableControl( hwnd, IDC_TYPE_POSTSCRIPT, FALSE );
    203                 WinCheckButton( hwnd, IDC_TYPE_ASIMAGE, TRUE );
    204             }
    205             WinSendMsg( hwnd, WM_CONTROL,
    206                         MPFROM2SHORT( IDC_TYPE_POSTSCRIPT, BN_CLICKED ),
    207                         MPFROMHWND( WinWindowFromID( hwnd, IDC_TYPE_POSTSCRIPT ) ) );
    208 
     231            // Enum printer queues
     232            _this->enumQueues( hwnd );
    209233
    210234            return (MRESULT)FALSE;
  • trunk/Lucide/SOURCE/gui/printDlg.h

    r91 r93  
    5656        void showJobProperties();
    5757        void setCurrentQInfo( HWND hwnd, PPRQINFO3 q );
     58        bool isPostscriptDevice();
    5859        static MRESULT EXPENTRY printDlgProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
    5960
Note: See TracChangeset for help on using the changeset viewer.