home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / xwphescr.zip / XWPH0208.ZIP / include / helpers / gpih.h < prev    next >
C/C++ Source or Header  |  2002-08-05  |  17KB  |  421 lines

  1.  
  2. /*
  3.  *@@sourcefile gpih.h:
  4.  *      header file for gpih.c (GPI helper functions). See remarks there.
  5.  *
  6.  *      Note: Version numbering in this file relates to XWorkplace version
  7.  *            numbering.
  8.  *
  9.  *@@include #define INCL_GPILOGCOLORTABLE       // for some funcs
  10.  *@@include #include <os2.h>
  11.  *@@include #include "helpers\gpih.h"
  12.  */
  13.  
  14. /*
  15.  *      Copyright (C) 1997-2000 Ulrich Möller.
  16.  *      This file is part of the "XWorkplace helpers" source package.
  17.  *      This is free software; you can redistribute it and/or modify
  18.  *      it under the terms of the GNU General Public License as published
  19.  *      by the Free Software Foundation, in version 2 as it comes in the
  20.  *      "COPYING" file of the XWorkplace main distribution.
  21.  *      This program is distributed in the hope that it will be useful,
  22.  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
  23.  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  24.  *      GNU General Public License for more details.
  25.  */
  26.  
  27. #if __cplusplus
  28. extern "C" {
  29. #endif
  30.  
  31. #ifndef GPIH_HEADER_INCLUDED
  32.     #define GPIH_HEADER_INCLUDED
  33.  
  34.     /* ******************************************************************
  35.      *
  36.      *   Rectangle helpers
  37.      *
  38.      ********************************************************************/
  39.  
  40.     BOOL gpihIsPointInRect(PRECTL prcl,
  41.                            LONG x,
  42.                            LONG y);
  43.  
  44.     VOID gpihInflateRect(PRECTL prcl,
  45.                          LONG l);
  46.  
  47.     /* ******************************************************************
  48.      *
  49.      *   Device helpers
  50.      *
  51.      ********************************************************************/
  52.  
  53.     ULONG gpihQueryDisplayCaps(ULONG ulIndex);
  54.  
  55.     /* ******************************************************************
  56.      *
  57.      *   Color helpers
  58.      *
  59.      ********************************************************************/
  60.  
  61.     // common RGB colors
  62.     #define RGBCOL_BLACK            0x00000000
  63.     #define RGBCOL_WHITE            0x00FFFFFF
  64.  
  65.     #define RGBCOL_RED              0x00FF0000
  66.     #define RGBCOL_PINK             0x00FF00FF
  67.     #define RGBCOL_BLUE             0x000000FF
  68.     #define RGBCOL_CYAN             0x0000FFFF
  69.     #define RGBCOL_GREEN            0x0000FF00
  70.     #define RGBCOL_YELLOW           0x00FFFF00
  71.     #define RGBCOL_GRAY             0x00CCCCCC
  72.  
  73.     #define RGBCOL_DARKRED          0x00800000
  74.     #define RGBCOL_DARKPINK         0x00800080
  75.     #define RGBCOL_DARKBLUE         0x00000080
  76.     #define RGBCOL_DARKCYAN         0x00008080
  77.     #define RGBCOL_DARKGREEN        0x00008000
  78.     #define RGBCOL_DARKYELLOW       0x00808000
  79.     #define RGBCOL_DARKGRAY         0x00808080
  80.  
  81.     /*
  82.      *@@ GET_BLUE:
  83.      *      gets the BLUE (first) byte from a
  84.      *      LONG RGB value.
  85.      *
  86.      *@@added V0.9.14 (2001-08-03) [umoeller]
  87.      */
  88.  
  89.     #define GET_BLUE(lcol)  *( ((PBYTE)(&(lcol))) )
  90.  
  91.     /*
  92.      *@@ GET_GREEN:
  93.      *      gets the GREEN (second) byte from a
  94.      *      LONG RGB value.
  95.      *
  96.      *@@added V0.9.14 (2001-08-03) [umoeller]
  97.      */
  98.  
  99.     #define GET_GREEN(lcol) *( ((PBYTE)(&(lcol))) + 1 )
  100.  
  101.     /*
  102.      *@@ GET_RED:
  103.      *      gets the RED (third) byte from a
  104.      *      LONG RGB value.
  105.      *
  106.      *@@added V0.9.14 (2001-08-03) [umoeller]
  107.      */
  108.  
  109.     #define GET_RED(lcol)   *( ((PBYTE)(&(lcol))) + 2 )
  110.  
  111.     /*
  112.      *@@ MAKE_RGB:
  113.      *      composes a LONG color value from
  114.      *      three BYTE values for red, green,
  115.      *      and blue.
  116.      *
  117.      *@@added V0.9.14 (2001-08-03) [umoeller]
  118.      */
  119.  
  120.     #define MAKE_RGB(r, g, b) (LONG)((BYTE)(b)) + (((LONG)((BYTE)(g))) << 8) + (((LONG)((BYTE)(r))) << 16)
  121.  
  122.     VOID XWPENTRY gpihManipulateRGB(PLONG plColor, double dFactor);
  123.     typedef VOID XWPENTRY GPIHMANIPULATERGB(PLONG plColor, double dFactor);
  124.     typedef GPIHMANIPULATERGB *PGPIHMANIPULATERGB;
  125.  
  126.     LONG XWPENTRY gpihMediumRGB(LONG lcol1, LONG lcol2);
  127.     typedef LONG XWPENTRY GPIHMEDIUMRGB(LONG lcol1, LONG lcol2);
  128.     typedef GPIHMEDIUMRGB *PGPIHMEDIUMRGB;
  129.  
  130.     BOOL XWPENTRY gpihSwitchToRGB(HPS hps);
  131.     typedef BOOL XWPENTRY GPIHSWITCHTORGB(HPS hps);
  132.     typedef GPIHSWITCHTORGB *PGPIHSWITCHTORGB;
  133.  
  134.     /* ******************************************************************
  135.      *
  136.      *   Drawing primitives helpers
  137.      *
  138.      ********************************************************************/
  139.  
  140.     VOID XWPENTRY gpihDrawRect(HPS hps, PRECTL prcl);
  141.     typedef VOID XWPENTRY GPIHDRAWRECT(HPS hps, PRECTL prcl);
  142.     typedef GPIHDRAWRECT *PGPIHDRAWRECT;
  143.  
  144.     VOID XWPENTRY gpihBox(HPS hps, LONG lControl, PRECTL prcl);
  145.     typedef VOID XWPENTRY GPIHBOX(HPS hps, LONG lControl, PRECTL prcl);
  146.     typedef GPIHBOX *PGPIHBOX;
  147.  
  148.     VOID XWPENTRY gpihMarker(HPS hps, LONG x, LONG y, ULONG ulWidth);
  149.     typedef VOID XWPENTRY GPIHMARKER(HPS hps, LONG x, LONG y, ULONG ulWidth);
  150.     typedef GPIHMARKER *PGPIHMARKER;
  151.  
  152.     VOID XWPENTRY gpihDrawThickFrame(HPS hps, PRECTL prcl, ULONG ulWidth);
  153.     typedef VOID XWPENTRY GPIHDRAWTHICKFRAME(HPS hps, PRECTL prcl, ULONG ulWidth);
  154.     typedef GPIHDRAWTHICKFRAME *PGPIHDRAWTHICKFRAME;
  155.  
  156.     VOID XWPENTRY gpihDraw3DFrame(HPS hps,
  157.                                   PRECTL prcl,
  158.                                   USHORT usWidth,
  159.                                   LONG lColorLeft,
  160.                                   LONG lColorRight);
  161.     typedef VOID XWPENTRY GPIHDRAW3DFRAME(HPS hps,
  162.                                           PRECTL prcl,
  163.                                           USHORT usWidth,
  164.                                           LONG lColorLeft,
  165.                                           LONG lColorRight);
  166.     typedef GPIHDRAW3DFRAME *PGPIHDRAW3DFRAME;
  167.  
  168.     LONG XWPENTRY gpihCharStringPosAt(HPS hps,
  169.                                       PPOINTL pptlStart,
  170.                                       PRECTL prclRect,
  171.                                       ULONG flOptions,
  172.                                       LONG lCount,
  173.                                       PCH pchString);
  174.     typedef LONG XWPENTRY GPIHCHARSTRINGPOSAT(HPS hps,
  175.                                               PPOINTL pptlStart,
  176.                                               PRECTL prclRect,
  177.                                               ULONG flOptions,
  178.                                               LONG lCount,
  179.                                               PCH pchString);
  180.     typedef GPIHCHARSTRINGPOSAT *PGPIHCHARSTRINGPOSAT;
  181.  
  182.     /*
  183.      *@@ BKGNDINFO:
  184.      *      background information passed into
  185.      *      gpihFillBackground.
  186.      *
  187.      *      The color flags apply always. The
  188.      *      bitmap flags apply only if hbm is
  189.      *      not NULLHANDLE.
  190.      *
  191.      *@@added V0.9.19 (2002-05-07) [umoeller]
  192.      */
  193.  
  194.     typedef struct _BKGNDINFO
  195.     {
  196.         ULONG       flPaintMode;
  197.                 // a combination of one of the color
  198.                 // flags and one of the bitmap flags:
  199.                 // a) color flags
  200.                 #define PMOD_COLORMASK      0x000F
  201.                 #define PMOD_SOLID          0x0000  // solid color, use lcol1
  202.                 #define PMOD_TOPBOTTOM      0x0001  // spectrum, lcol1 = top, lcol2 = bottom
  203.                 #define PMOD_LEFTRIGHT      0x0002  // spectrum, lcol1 = left, lcol2 = right
  204.                 // b) bitmap flags
  205.                 #define PMOD_BMPMASK        0x00F0
  206.                 #define PMOD_BMP_CENTER     0x0000  // center the bitmap
  207.                 #define PMOD_BMP_SCALE_X    0x0002  // scale the bitmap to size in prcl,
  208.                                                     // respect lScale
  209.                 #define PMOD_BMP_TILE       0x0004  // tile the bitmap
  210.  
  211.         LONG        lcol1,              // color 1 (RGB)
  212.                     lcol2;              // color 2 (RGB)
  213.  
  214.         HBITMAP     hbm;                // bitmap or NULLHANDLE if none
  215.         ULONG       lScale;             // only with PMOD_BMP_SCALE_X: how many times
  216.                                         // the bmp should be scaled (as with WPS
  217.                                         // folder "Background" page); this cannot
  218.                                         // be zero then
  219.  
  220.     } BKGNDINFO, *PBKGNDINFO;
  221.  
  222.     VOID gpihFillBackground(HPS hps,
  223.                             PRECTL prcl,
  224.                             PBKGNDINFO pInfo);
  225.  
  226.     /* ******************************************************************
  227.      *
  228.      *   Font helpers
  229.      *
  230.      ********************************************************************/
  231.  
  232.     BOOL XWPENTRY gpihMatchFont(HPS hps,
  233.                                 LONG lSize,
  234.                                 BOOL fFamily,
  235.                                 const char *pcszName,
  236.                                 USHORT usFormat,
  237.                                 FATTRS *pfa,
  238.                                 PFONTMETRICS pFontMetrics);
  239.     typedef BOOL XWPENTRY GPIHMATCHFONT(HPS hps,
  240.                                         LONG lSize,
  241.                                         BOOL fFamily,
  242.                                         const char *pcszName,
  243.                                         USHORT usFormat,
  244.                                         FATTRS *pfa,
  245.                                         PFONTMETRICS pFontMetrics);
  246.     typedef GPIHMATCHFONT *PGPIHMATCHFONT;
  247.  
  248.     BOOL XWPENTRY gpihSplitPresFont(PSZ pszFontNameSize,
  249.                                     PULONG pulSize,
  250.                                     PSZ *ppszFaceName);
  251.     typedef BOOL XWPENTRY GPIHSPLITPRESFONT(PSZ pszFontNameSize,
  252.                                             PULONG pulSize,
  253.                                             PSZ *ppszFaceName);
  254.     typedef GPIHSPLITPRESFONT *PGPIHSPLITPRESFONT;
  255.  
  256.     BOOL XWPENTRY gpihLockLCIDs(VOID);
  257.     typedef BOOL XWPENTRY GPIHLOCKLCIDS(VOID);
  258.     typedef GPIHLOCKLCIDS *PGPIHLOCKLCIDS;
  259.  
  260.     VOID XWPENTRY gpihUnlockLCIDs(VOID);
  261.     typedef VOID XWPENTRY GPIHUNLOCKLCIDS(VOID);
  262.     typedef GPIHUNLOCKLCIDS *PGPIHUNLOCKLCIDS;
  263.  
  264.     LONG XWPENTRY gpihCreateFont(HPS hps, FATTRS *pfa);
  265.     typedef LONG XWPENTRY GPIHCREATEFONT(HPS hps, FATTRS *pfa);
  266.     typedef GPIHCREATEFONT *PGPIHCREATEFONT;
  267.  
  268.     LONG XWPENTRY gpihFindFont(HPS hps,
  269.                                LONG lSize,
  270.                                BOOL fFamily,
  271.                                const char *pcszName,
  272.                                USHORT usFormat,
  273.                                PFONTMETRICS pFontMetrics);
  274.     typedef LONG XWPENTRY GPIHFINDFONT(HPS hps,
  275.                                        LONG lSize,
  276.                                        BOOL fFamily,
  277.                                        const char *pcszName,
  278.                                        USHORT usFormat,
  279.                                        PFONTMETRICS pFontMetrics);
  280.     typedef GPIHFINDFONT *PGPIHFINDFONT;
  281.  
  282.     LONG XWPENTRY gpihFindPresFont(HWND hwnd,
  283.                                    BOOL fInherit,
  284.                                    HPS hps,
  285.                                    const char *pcszDefaultFont,
  286.                                    PFONTMETRICS pFontMetrics,
  287.                                    PLONG plSize);
  288.     typedef LONG XWPENTRY GPIHFINDPRESFONT(HWND hwnd,
  289.                                            BOOL fInherit,
  290.                                            HPS hps,
  291.                                            const char *pcszDefaultFont,
  292.                                            PFONTMETRICS pFontMetrics,
  293.                                            PLONG plSize);
  294.     typedef GPIHFINDPRESFONT *PGPIHFINDPRESFONT;
  295.  
  296.     BOOL XWPENTRY gpihSetPointSize(HPS hps, LONG lPointSize);
  297.     typedef BOOL XWPENTRY GPIHSETPOINTSIZE(HPS hps, LONG lPointSize);
  298.     typedef GPIHSETPOINTSIZE *PGPIHSETPOINTSIZE;
  299.  
  300.     LONG XWPENTRY gpihQueryLineSpacing(HPS hps);
  301.     typedef LONG XWPENTRY GPIHQUERYLINESPACING(HPS hps);
  302.     typedef GPIHQUERYLINESPACING *PGPIHQUERYLINESPACING;
  303.  
  304.     /* ******************************************************************
  305.      *
  306.      *   Bitmap helpers
  307.      *
  308.      ********************************************************************/
  309.  
  310.     BOOL XWPENTRY gpihCreateMemPS(HAB hab, PSIZEL psizlPage, HDC *hdcMem, HPS *hpsMem);
  311.     typedef BOOL XWPENTRY GPIHCREATEMEMPS(HAB hab, PSIZEL psizlPage, HDC *hdcMem, HPS *hpsMem);
  312.     typedef GPIHCREATEMEMPS *PGPIHCREATEMEMPS;
  313.  
  314.     HBITMAP XWPENTRY gpihCreateBitmap(HPS hpsMem, ULONG  cx, ULONG cy);
  315.     typedef HBITMAP XWPENTRY GPIHCREATEBITMAP(HPS hpsMem, ULONG  cx, ULONG cy);
  316.     typedef GPIHCREATEBITMAP *PGPIHCREATEBITMAP;
  317.  
  318.     HBITMAP XWPENTRY gpihCreateBitmap2(HPS hpsMem, ULONG  cx, ULONG cy, ULONG cPlanes, ULONG cBitCount);
  319.  
  320.     HBITMAP XWPENTRY gpihCreateHalftonedBitmap(HAB hab, HBITMAP hbmSource, LONG lColorGray);
  321.     typedef HBITMAP XWPENTRY GPIHCREATEHALFTONEDBITMAP(HAB hab, HBITMAP hbmSource, LONG lColorGray);
  322.     typedef GPIHCREATEHALFTONEDBITMAP *PGPIHCREATEHALFTONEDBITMAP;
  323.  
  324.     APIRET gpihLoadBitmap(HBITMAP *phbm,
  325.                           HPS hps,
  326.                           HMODULE hmodResource,
  327.                           ULONG idBitmap);
  328.  
  329.     APIRET XWPENTRY gpihLoadBitmapFile(HBITMAP *phbm, HPS hps, PCSZ pcszBmpFile);
  330.     typedef APIRET XWPENTRY GPIHLOADBITMAPFILE(HBITMAP *phbm, HPS hps, PCSZ pcszBmpFile);
  331.     typedef GPIHLOADBITMAPFILE *PGPIHLOADBITMAPFILE;
  332.  
  333.     LONG XWPENTRY gpihStretchBitmap(HPS hpsTarget,
  334.                                     HBITMAP hbmSource,
  335.                                     PRECTL prclSource,
  336.                                     PRECTL prclTarget,
  337.                                     BOOL fProportional);
  338.     typedef LONG XWPENTRY GPIHSTRETCHBITMAP(HPS hpsTarget,
  339.                                             HBITMAP hbmSource,
  340.                                             PRECTL prclSource,
  341.                                             PRECTL prclTarget,
  342.                                             BOOL fProportional);
  343.     typedef GPIHSTRETCHBITMAP *PGPIHSTRETCHBITMAP;
  344.  
  345.     /* BOOL XWPENTRY gpihIcon2Bitmap(HPS hpsMem,
  346.                                   HPOINTER hptr,
  347.                                   LONG lBkgndColor,
  348.                                   PPOINTL pptlLowerLeft,
  349.                                   ULONG ulIconSize); */
  350.  
  351.     BOOL XWPENTRY gpihDrawPointer(HPS hps,
  352.                                   LONG x,
  353.                                   LONG y,
  354.                                   HPOINTER hptr,
  355.                                   PSIZEL pszlIcon,
  356.                                   PRECTL prclClip,
  357.                                   ULONG fl);
  358.     typedef BOOL XWPENTRY GPIHDRAWPOINTER(HPS hps,
  359.                                           LONG x,
  360.                                           LONG y,
  361.                                           HPOINTER hptr,
  362.                                           PSIZEL pszlIcon,
  363.                                           PRECTL prclClip,
  364.                                           ULONG fl);
  365.     typedef GPIHDRAWPOINTER *PGPIHDRAWPOINTER;
  366.  
  367.     /* ******************************************************************
  368.      *
  369.      *   XBitmap functions
  370.      *
  371.      ********************************************************************/
  372.  
  373.     /*
  374.      *@@ XBITMAP:
  375.      *      representation of an XBitmap, which is created
  376.      *      with gpihCreateXBitmap and destroyed with
  377.      *      gpihDestroyXBitmap.
  378.      *
  379.      *      An XBitmap is essentially a set of a memory
  380.      *      device context, a memory presentation space,
  381.      *      and a bitmap which is selected into that
  382.      *      HPS.
  383.      *
  384.      *@@added V0.9.12 (2001-05-20) [umoeller]
  385.      */
  386.  
  387.     typedef struct _XBITMAP
  388.     {
  389.         HDC     hdcMem;     // memory DC
  390.         HPS     hpsMem;     // memory PS
  391.         HBITMAP hbm;        // bitmap handle
  392.         SIZEL   szl;        // size of bitmap
  393.     } XBITMAP, *PXBITMAP;
  394.  
  395.     PXBITMAP XWPENTRY gpihCreateXBitmap(HAB hab, LONG cx, LONG cy);
  396.     typedef PXBITMAP XWPENTRY GPIHCREATEXBITMAP(HAB hab, LONG cx, LONG cy);
  397.     typedef GPIHCREATEXBITMAP *PGPIHCREATEXBITMAP;
  398.  
  399.     PXBITMAP gpihCreateXBitmap2(HAB hab,
  400.                                 LONG cx,
  401.                                 LONG cy,
  402.                                 ULONG cPlanes,
  403.                                 ULONG cBitCount);
  404.  
  405.     HBITMAP XWPENTRY gpihDetachBitmap(PXBITMAP pbmp);
  406.  
  407.     VOID XWPENTRY gpihDestroyXBitmap(PXBITMAP *ppbmp);
  408.     typedef VOID XWPENTRY GPIHDESTROYXBITMAP(PXBITMAP *ppbmp);
  409.     typedef GPIHDESTROYXBITMAP *PGPIHDESTROYXBITMAP;
  410.  
  411.     PXBITMAP gpihCreateBmpFromPS(HAB hab,
  412.                                  HPS hpsScreen,
  413.                                  PRECTL prcl);
  414.  
  415. #endif
  416.  
  417. #if __cplusplus
  418. }
  419. #endif
  420.  
  421.