Ignore:
Timestamp:
Dec 16, 1999, 5:52:33 PM (26 years ago)
Author:
cbratschi
Message:

text output API changes, line speed improvements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gdi32/oslibgpi.cpp

    r2049 r2092  
    1 /* $Id: oslibgpi.cpp,v 1.1 1999-12-09 16:49:45 cbratschi Exp $ */
     1/* $Id: oslibgpi.cpp,v 1.2 1999-12-16 16:52:32 cbratschi Exp $ */
    22
    33/*
     
    1515#include <stdlib.h>
    1616#include <string.h>
     17#include <math.h>
    1718#include "win32type.h"
    1819#include "oslibgpi.h"
     
    2021
    2122#define GetDCData(a) ((pDCData)a)
     23
     24LONG APIENTRY _GpiQueryTabbedTextExtent(HPS hps,LONG lCount,PCH pchString,LONG lTabCount,PULONG puTabStops);
     25
     26inline LONG GpiQueryTabbedTextExtent(HPS hps,LONG lCount,PCH pchString,LONG lTabCount,PULONG puTabStops)
     27{
     28  LONG yyrc;
     29  USHORT sel = RestoreOS2FS();
     30
     31  yyrc = _GpiQueryTabbedTextExtent(hps,lCount,pchString,lTabCount,puTabStops);
     32  SetFS(sel);
     33
     34  return yyrc;
     35}
     36
     37LONG APIENTRY _GpiTabbedCharStringAt(HPS hps,PPOINTL pPtStart,PRECTL prclRect,ULONG flOptions,LONG lCount,PCH pchString,LONG lTabCount,PULONG puTabStops,LONG lTabOrigin);
     38
     39inline LONG GpiTabbedCharStringAt(HPS hps,PPOINTL pPtStart,PRECTL prclRect,ULONG flOptions,LONG lCount,PCH pchString,LONG lTabCount,PULONG puTabStops,LONG lTabOrigin)
     40{
     41  LONG yyrc;
     42  USHORT sel = RestoreOS2FS();
     43
     44  yyrc = _GpiTabbedCharStringAt(hps,pPtStart,prclRect,flOptions,lCount,pchString,lTabCount,puTabStops,lTabOrigin);
     45  SetFS(sel);
     46
     47  return yyrc;
     48}
    2249
    2350void inline swap(LONG &a,LONG &b)
     
    103130}
    104131
     132BOOL getInPath(PVOID pHps)
     133{
     134  return GetDCData(pHps)->inPath;
     135}
     136
     137VOID setInPath(PVOID pHps,BOOL inPath)
     138{
     139  GetDCData(pHps)->inPath = inPath;
     140}
     141
     142BOOL getIsWideLine(PVOID pHps)
     143{
     144  return GetDCData(pHps)->isWideLine;
     145}
     146
     147BOOL getIsTopTop(PVOID pHps)
     148{
     149  return GetDCData(pHps)->isTopTop;
     150}
     151
     152ULONG getMapMode(PVOID pHps)
     153{
     154  return GetDCData(pHps)->MapMode;
     155}
     156
    105157BOOL OSLibGpiQueryCurrentPosition(PVOID pHps,PPOINTLOS2 ptl)
    106158{
     
    132184  return GpiQueryTextAlignment(GetDCData(pHps)->hps,plHoriz,plVert);
    133185}
     186
     187LONG OSLibGpiQueryTabbedTextExtent(PVOID pHps,INT lCount,LPCSTR pchString,INT lTabCount,PINT puTabStops)
     188{
     189  return GpiQueryTabbedTextExtent(GetDCData(pHps)->hps,lCount,(PCH)pchString,lTabCount,(PULONG)puTabStops);
     190}
     191
     192LONG OSLibGpiTabbedCharStringAt(PVOID pHps,PPOINTLOS2 pPtStart,PRECTLOS2 prclRect,ULONG flOptions,INT lCount,LPCSTR pchString,INT lTabCount,PINT puTabStops,INT lTabOrigin)
     193{
     194  return GpiTabbedCharStringAt(GetDCData(pHps)->hps,(PPOINTL)pPtStart,(PRECTL)prclRect,flOptions,lCount,(PCH)pchString,lTabCount,(PULONG)puTabStops,lTabOrigin);
     195}
     196
     197BOOL OSLibGpiQueryTextBox(PVOID pHps,LONG lCount1,LPCSTR pchString,LONG lCount2,PPOINTLOS2 aptlPoints)
     198{
     199  return GpiQueryTextBox(GetDCData(pHps)->hps,lCount1,(PCH)pchString,lCount2,(PPOINTL)aptlPoints);
     200}
     201
     202VOID calcDimensions(POINTLOS2 box[],PPOINTLOS2 point)
     203{
     204  ULONG    cx;
     205  ULONG    cy;
     206
     207  if (box[TXTBOX_BOTTOMLEFT].y == box[TXTBOX_BOTTOMRIGHT].y)
     208  {
     209    point->y = labs (box[TXTBOX_BOTTOMLEFT].y-box[TXTBOX_TOPLEFT].y);
     210    point->x = labs (box[TXTBOX_CONCAT].x-box[TXTBOX_BOTTOMLEFT].x);
     211
     212    if (box[TXTBOX_BOTTOMLEFT].x != box[TXTBOX_TOPLEFT].x)
     213    {
     214      if (point->y < 25)
     215        cx = 2;
     216      else
     217        cx = ((point->y*10)+50)/100;
     218      point->x += cx;
     219    }
     220  } else
     221  {
     222    cx = labs (box[TXTBOX_BOTTOMLEFT].x-box[TXTBOX_TOPLEFT].x);
     223    cy = labs (box[TXTBOX_BOTTOMLEFT].y-box[TXTBOX_TOPLEFT].y);
     224    point->y = (ULONG)hypot(cx,cy);
     225
     226    cx = labs (box[TXTBOX_TOPRIGHT].x-box[TXTBOX_TOPLEFT].x);
     227    cy = labs (box[TXTBOX_TOPRIGHT].y-box[TXTBOX_TOPLEFT].y);
     228    point->x  = (ULONG)hypot(cx,cy);
     229  }
     230}
     231
     232LONG OSLibGpiQueryBackMix(PVOID pHps)
     233{
     234  return GpiQueryBackMix(GetDCData(pHps)->hps);
     235}
     236
     237BOOL doesYAxisGrowNorth(PVOID pHps)
     238{
     239  if ((GetDCData(pHps)->windowExt.cy < 0  && GetDCData(pHps)->viewportYExt > 0.0) ||
     240      (GetDCData(pHps)->windowExt.cy > 0  && GetDCData(pHps)->viewportYExt < 0.0))
     241  {
     242    if (GetDCData(pHps)->graphicsMode == GM_COMPATIBLE_W ||
     243        (GetDCData(pHps)->graphicsMode == GM_ADVANCED_W && GetDCData(pHps)->xform.eM22 >= 0.0))
     244      return TRUE;
     245  } else
     246  {
     247    if (GetDCData(pHps)->graphicsMode == GM_ADVANCED_W && GetDCData(pHps)->xform.eM22 < 0.0)
     248      return TRUE;
     249  }
     250
     251  return FALSE;
     252}
     253
     254LONG OSLibWinDrawTabbedText(PVOID pHps,LONG cchText,LONG lTabs,LPCSTR lpchText,PVOID prcl,LONG clrFore,LONG clrBack,ULONG flCmd)
     255{
     256  //return WinDraw
     257  //undocumented
     258  return 0;
     259}
     260
     261BOOL OSLibGpiMove(PVOID pHps,PPOINTLOS2 pptlPoint)
     262{
     263  return GpiMove(GetDCData(pHps)->hps,(PPOINTL)pptlPoint);
     264}
     265
     266LONG OSLibGpiLine(PVOID pHps,PPOINTLOS2 pptlEndPoint)
     267{
     268  return GpiLine(GetDCData(pHps)->hps,(PPOINTL)pptlEndPoint);
     269}
     270
     271#define FSP_ENDPATH   0x00000010
     272#define FSP_FILL      0x00000020
     273#define FSP_CLOSEPATH 0x00000040
     274
     275BOOL APIENTRY _PaxStrokeAndFillPath(HPS hPS,ULONG ulAction,ULONG ulStrokeAttrs,PAREABUNDLE pPenStroke);
     276
     277inline BOOL PaxStrokeAndFillPath(HPS hPS,ULONG ulAction,ULONG ulStrokeAttrs,PAREABUNDLE pPenStroke)
     278{
     279  BOOL yyrc;
     280  USHORT sel = RestoreOS2FS();
     281
     282  yyrc = _PaxStrokeAndFillPath(hPS,ulAction,ulStrokeAttrs,pPenStroke);
     283  SetFS(sel);
     284
     285  return yyrc;
     286}
     287
     288BOOL OSLibGpiEndPath(PVOID pHps)
     289{
     290  return GpiEndPath(GetDCData(pHps)->hps);
     291}
     292
     293BOOL drawLinePointCircle(PVOID pHps,INT width,INT height,LONG color)
     294{
     295  ARCPARAMS arcp;
     296  BOOL rc = TRUE;
     297
     298  arcp.lP = 1;
     299  arcp.lQ = 1;
     300  arcp.lR = 0;
     301  arcp.lS = 0;
     302  if (!GpiSetArcParams(GetDCData(pHps)->hps,&arcp))
     303    return FALSE;
     304
     305  AREABUNDLE newAreaBundle, oldAreaBundle;
     306  LINEBUNDLE lineBundle;
     307
     308  GpiQueryAttrs(GetDCData(pHps)->hps,PRIM_AREA,ABB_COLOR | ABB_MIX_MODE | ABB_SET | ABB_SYMBOL,(PBUNDLE)&oldAreaBundle);
     309  GpiQueryAttrs(GetDCData(pHps)->hps,PRIM_LINE,LBB_MIX_MODE, (PBUNDLE)&lineBundle);
     310
     311  newAreaBundle           = oldAreaBundle;
     312  newAreaBundle.lColor    = color;
     313  newAreaBundle.usMixMode = lineBundle.usMixMode;
     314  newAreaBundle.usSet     = LCID_DEFAULT;
     315  newAreaBundle.usSymbol  = PATSYM_SOLID;
     316
     317  if (!GpiSetAttrs(GetDCData(pHps)->hps,PRIM_AREA,ABB_COLOR | ABB_MIX_MODE | ABB_SET | ABB_SYMBOL,0,(PBUNDLE)&newAreaBundle))
     318    return FALSE;
     319
     320  if (GpiFullArc(GetDCData(pHps)->hps,DRO_FILL,MAKEFIXED((width-1)>>1,0)) == GPI_ERROR)
     321    rc = FALSE;
     322  GpiSetAttrs(GetDCData(pHps)->hps,PRIM_AREA,ABB_COLOR | ABB_MIX_MODE | ABB_SET | ABB_SYMBOL,0,(PBUNDLE)&oldAreaBundle);
     323
     324  return rc;
     325}
     326
     327BOOL drawLinePoint(PVOID pHps,PPOINTLOS2 pt,LONG color)
     328{
     329  LINEBUNDLE lbOld, lbNew;
     330  LONG defaults = GpiQueryAttrs(GetDCData(pHps)->hps, PRIM_LINE, LBB_COLOR, &lbOld);
     331
     332  lbNew.lColor = color;
     333  BOOL rc = GpiSetAttrs(GetDCData(pHps)->hps,PRIM_LINE,LBB_COLOR,0,&lbNew) && GpiSetPel(GetDCData(pHps)->hps,(PPOINTL)pt) != GPI_ERROR;
     334
     335  GpiSetAttrs(GetDCData(pHps)->hps,PRIM_LINE,LBB_COLOR,defaults,&lbOld);
     336
     337  return rc;
     338}
Note: See TracChangeset for help on using the changeset viewer.