Ignore:
Timestamp:
Jun 18, 2009, 12:12:33 PM (16 years ago)
Author:
ydario
Message:

Gdi32 updates.

File:
1 edited

Legend:

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

    r10374 r21304  
    1313#include <objhandle.h>
    1414
     15#ifdef RAS
     16
     17RAS_TRACK_HANDLE rthFont;
     18RAS_TRACK_HANDLE rthDC;
     19RAS_TRACK_HANDLE rthPen;
     20RAS_TRACK_HANDLE rthBrush;
     21RAS_TRACK_HANDLE rthRgn;
     22RAS_TRACK_HANDLE rthBmp;
     23
     24void STATS_CreateFontIndirect(HFONT hFont, LOGFONTA* lplf)
     25{
     26    if (!rthFont) STATS_InitializeGDI32 ();
     27    RasAddObject (rthFont, hFont, lplf, sizeof (LOGFONTA));
     28}
     29void STATS_DeleteFont(HFONT hFont)
     30{
     31    RasRemoveObject (rthFont, hFont);
     32}
     33void STATS_CreateCompatibleDC(HDC hdc, HDC hdcCreated)
     34{
     35    if (!rthDC) STATS_InitializeGDI32 ();
     36    RasAddObject (rthDC, hdcCreated, &hdc, sizeof (hdc));
     37}
     38void STATS_CreateICA(HDC hdc, LPCSTR lpszDriver, LPCSTR lpszDevice, LPCSTR lpszOutput,
     39                     const DEVMODEA *lpdvmInit)
     40{
     41    if (!rthDC) STATS_InitializeGDI32 ();
     42    RasAddObject (rthDC, hdc, NULL, 0);
     43}
     44void STATS_CreateDCA(HDC hdc, LPCSTR lpszDriver, LPCSTR lpszDevice, LPCSTR lpszOutput,
     45                     const DEVMODEA *lpdvmInit)
     46{
     47    if (!rthDC) STATS_InitializeGDI32 ();
     48    RasAddObject (rthDC, hdc, NULL, 0);
     49}
     50void STATS_DeleteDC(HDC hdc)
     51{
     52    RasRemoveObject (rthDC, hdc);
     53}
     54void STATS_CreatePatternBrush(HBRUSH hBrush, HBITMAP hBitmap)
     55{
     56    if (!rthBrush) STATS_InitializeGDI32 ();
     57    RasAddObject (rthBrush, hBrush, &hBitmap, sizeof (hBitmap));
     58}
     59void STATS_CreateDIBPatternBrushPt(HBRUSH hBrush, LPCVOID buffer, DWORD usage)
     60{
     61    if (!rthBrush) STATS_InitializeGDI32 ();
     62    RasAddObject (rthBrush, hBrush, &buffer, sizeof (buffer));
     63}
     64void STATS_CreateBrushIndirect(HBRUSH hBrush, LPLOGBRUSH pLogBrush)
     65{
     66    if (!rthBrush) STATS_InitializeGDI32 ();
     67    RasAddObject (rthBrush, hBrush, pLogBrush, sizeof (LOGBRUSH));
     68}
     69void STATS_CreateHatchBrush(HBRUSH hBrush, int fnStyle, COLORREF clrref)
     70{
     71    struct Parms
     72    {
     73        int fnStyle;
     74        COLORREF clrref;
     75    } parms = {fnStyle, clrref};
     76    if (!rthBrush) STATS_InitializeGDI32 ();
     77    RasAddObject (rthBrush, hBrush, &parms, sizeof (parms));
     78}
     79void STATS_CreateSolidBrush(HBRUSH hBrush, COLORREF color)
     80{
     81    if (!rthBrush) STATS_InitializeGDI32 ();
     82    RasAddObject (rthBrush, hBrush, &color, sizeof (COLORREF));
     83}
     84void STATS_DeleteBrush(HBRUSH hBrush)
     85{
     86    RasRemoveObject (rthBrush, hBrush);
     87}
     88void STATS_CreatePenIndirect(HPEN hPen, const LOGPEN *lplgpn)
     89{
     90    if (!rthPen) STATS_InitializeGDI32 ();
     91    RasAddObject (rthPen, hPen, (void *)lplgpn, sizeof (LOGPEN));
     92}
     93void STATS_CreatePen(HPEN hPen, int fnPenStyle, int nWidth, COLORREF crColor)
     94{
     95    struct Parms
     96    {
     97        int fnPenStyle;
     98        int nWidth;
     99        COLORREF crColor;
     100    } parms = {fnPenStyle, nWidth, crColor};
     101   
     102    if (!rthPen) STATS_InitializeGDI32 ();
     103    RasAddObject (rthPen, hPen, &parms, sizeof (parms));
     104}
     105void STATS_ExtCreatePen(HPEN hPen, DWORD dwPenStyle, DWORD dwWidth, const LOGBRUSH *lplb,
     106                        DWORD dwStyleCount, const DWORD *lpStyle)
     107{
     108    struct Parms
     109    {
     110        DWORD dwPenStyle;
     111        DWORD dwWidth;
     112        const LOGBRUSH *lplb;
     113        DWORD dwStyleCount;
     114        const DWORD *lpStyle;
     115    } parms = {dwPenStyle, dwWidth, lplb,
     116               dwStyleCount, lpStyle};
     117   
     118    if (!rthPen) STATS_InitializeGDI32 ();
     119    RasAddObject (rthPen, hPen, &parms, sizeof (parms));
     120}
     121void STATS_DeletePen(HPEN hPen)
     122{
     123    RasRemoveObject (rthPen, hPen);
     124}
     125
     126void STATS_CreatePolyPolygonRgn(HRGN hRgn, const POINT *lppt, const int *pPolyCount, int nCount, int fnPolyFillMode)
     127{
     128    if (!rthRgn) STATS_InitializeGDI32 ();
     129    RasAddObject (rthRgn, hRgn, NULL, 0);
     130}
     131void STATS_CreateRectRgn(HRGN hRgn, int left, int top, int right, int bottom)
     132{
     133    if (!rthRgn) STATS_InitializeGDI32 ();
     134    RasAddObject (rthRgn, hRgn, NULL, 0);
     135}
     136void STATS_CreateRoundRectRgn(HRGN hRgn, int left, int top, int right, int bottom, int nWidthEllipse, int nHeightEllipse)
     137{
     138    if (!rthRgn) STATS_InitializeGDI32 ();
     139    RasAddObject (rthRgn, hRgn, NULL, 0);
     140}
     141void STATS_ExtCreateRegion(HRGN hRgn, PVOID pXform, DWORD count, const RGNDATA * pData)
     142{
     143    if (!rthRgn) STATS_InitializeGDI32 ();
     144    RasAddObject (rthRgn, hRgn, NULL, 0);
     145}
     146void STATS_CreateEllipticRgn(HRGN hRgn, int left, int top, int right, int bottom)
     147{
     148    if (!rthRgn) STATS_InitializeGDI32 ();
     149    RasAddObject (rthRgn, hRgn, NULL, 0);
     150}
     151void STATS_CreatePolygonRgn(HRGN hRgn, const POINT * lppt, int cPoints, int fnPolyFillMode)
     152{
     153    if (!rthRgn) STATS_InitializeGDI32 ();
     154    RasAddObject (rthRgn, hRgn, NULL, 0);
     155}
     156void STATS_DeleteRgn(HRGN hRgn)
     157{
     158    RasRemoveObject (rthRgn, hRgn);
     159}
     160
     161void STATS_CreateDIBitmap(HBITMAP hBitmap,HDC hdc, const BITMAPINFOHEADER *lpbmih,
     162                          DWORD fdwInit, const void *lpbInit,
     163                          const BITMAPINFO *lpbmi, UINT fuUsage)
     164{
     165    if (!rthBmp) STATS_InitializeGDI32 ();
     166    RasAddObject (rthBmp, hBitmap, NULL, 0);
     167}
     168void STATS_CreateCompatibleBitmap(HBITMAP hBitmap,HDC hdc, int nWidth, int nHeight)
     169{
     170    if (!rthBmp) STATS_InitializeGDI32 ();
     171    RasAddObject (rthBmp, hBitmap, NULL, 0);
     172}
     173void STATS_CreateBitmap(HBITMAP hBitmap,int nWidth, int nHeight, UINT cPlanes,
     174                        UINT cBitsPerPel, const void *lpvBits)
     175{
     176    if (!rthBmp) STATS_InitializeGDI32 ();
     177    RasAddObject (rthBmp, hBitmap, NULL, 0);
     178}
     179void STATS_CreateDIBSection(HBITMAP hBitmap,HDC hdc, BITMAPINFO *pbmi, UINT iUsage,
     180                            VOID **ppvBits, HANDLE hSection, DWORD dwOffset)
     181{
     182    if (!rthBmp) STATS_InitializeGDI32 ();
     183    RasAddObject (rthBmp, hBitmap, NULL, 0);
     184}
     185void STATS_CreateBitmapIndirect(HBITMAP hBitmap, const BITMAP *pBitmap)
     186{
     187    if (!rthBmp) STATS_InitializeGDI32 ();
     188    RasAddObject (rthBmp, hBitmap, NULL, 0);
     189}
     190void STATS_DeleteBitmap(HBITMAP hBitmap)
     191{
     192    RasRemoveObject (rthBmp, hBitmap);
     193}
     194
     195void STATS_DeleteObject(HANDLE hObj, DWORD objtype)
     196{
     197    switch(objtype) {
     198    case OBJ_PEN:
     199    case OBJ_EXTPEN:
     200        STATS_DeletePen(hObj);
     201        break;
     202    case OBJ_BRUSH:
     203        STATS_DeleteBrush(hObj);
     204        break;
     205    case OBJ_FONT:
     206        STATS_DeleteFont(hObj);
     207        break;
     208    case OBJ_REGION:
     209        STATS_DeleteRgn(hObj);
     210        break;
     211    case OBJ_BITMAP:
     212        STATS_DeleteBitmap(hObj);
     213        break;
     214
     215    case OBJ_MEMDC:
     216    case OBJ_DC:
     217        STATS_DeleteDC(hObj);
     218        break;
     219
     220    case OBJ_PAL:
     221    case OBJ_METAFILE:
     222    case OBJ_ENHMETADC:
     223    case OBJ_ENHMETAFILE:
     224    case OBJ_METADC:
     225        break;
     226    default:
     227        RasLog ("!ERROR! Unknown object %x of type %d", hObj, objtype);
     228        break;
     229    }
     230}
     231
     232void STATS_DumpStatsGDI32()
     233{
     234    RasLogObjects(rthDC, RAS_FLAG_LOG_OBJECTS);
     235    RasLogObjects(rthPen, RAS_FLAG_LOG_OBJECTS);
     236    RasLogObjects(rthBrush, RAS_FLAG_LOG_OBJECTS);
     237    RasLogObjects(rthRgn, RAS_FLAG_LOG_OBJECTS);
     238    RasLogObjects(rthBmp, RAS_FLAG_LOG_OBJECTS);
     239}
     240
     241void STATS_InitializeGDI32(void)
     242{
     243    RasEnterSerialize ();
     244    if (!rthDC)
     245    {
     246        RasRegisterObjectTracking(&rthDC, "DC", 0, 0, NULL, NULL);
     247    }
     248    if (!rthPen)
     249    {
     250        RasRegisterObjectTracking(&rthPen, "Pen", 0, 0, NULL, NULL);
     251    }
     252    if (!rthBrush)
     253    {
     254        RasRegisterObjectTracking(&rthBrush, "Brush", 0, 0, NULL, NULL);
     255    }
     256    if (!rthRgn)
     257    {
     258        RasRegisterObjectTracking(&rthRgn, "Region", 0, 0, NULL, NULL);
     259    }
     260    if (!rthBmp)
     261    {
     262        RasRegisterObjectTracking(&rthBmp, "Bitmap", 0, 0, NULL, NULL);
     263    }
     264    RasExitSerialize ();
     265}
     266
     267void STATS_UninitializeGDI32(void)
     268{
     269// done in RAS kernel   
     270//    RasDeregisterObjectTracking(rthDC);
     271//    RasDeregisterObjectTracking(rthPen);
     272//    RasDeregisterObjectTracking(rthBrush);
     273//    RasDeregisterObjectTracking(rthRgn);
     274//    RasDeregisterObjectTracking(rthBmp);
     275}
     276
     277#else
    15278#ifdef DEBUG
    16279
     
    316579//******************************************************************************
    317580//******************************************************************************
     581void STATS_InitializeGDI32(void)
     582{
     583    return;
     584}
     585
     586void STATS_UninitializeGDI32(void)
     587{
     588    return;
     589}
    318590
    319591
    320592#endif //DEBUG
     593#endif //RAS
Note: See TracChangeset for help on using the changeset viewer.