You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
3.6 KiB
164 lines
3.6 KiB
/******************************Module*Header*******************************\
|
|
*
|
|
* $Workfile: PATH.C $
|
|
*
|
|
* Author: Noel VanHook
|
|
* Date: Jan 10, 1996
|
|
*
|
|
* Purpose: Handle calls to DrvStokeAndFillPath.
|
|
*
|
|
* Copyright (c) 1996 Cirrus Logic, Inc.
|
|
*
|
|
* $Log: X:/log/laguna/nt35/displays/cl546x/path.c $
|
|
*
|
|
* Rev 1.7 21 Mar 1997 12:21:42 noelv
|
|
* Combined "do_flag" and "sw_test_flag" together into "pointer_switch"
|
|
*
|
|
* Rev 1.6 26 Nov 1996 09:57:52 noelv
|
|
* Added DBG prints.
|
|
*
|
|
* Rev 1.5 06 Sep 1996 15:16:36 noelv
|
|
* Updated NULL driver for 4.0
|
|
*
|
|
* Rev 1.4 20 Aug 1996 11:04:08 noelv
|
|
* Bugfix release from Frido 8-19-96
|
|
*
|
|
* Rev 1.3 17 Aug 1996 14:03:28 frido
|
|
* Added PVCS header.
|
|
*
|
|
\**************************************************************************/
|
|
|
|
#include "precomp.h"
|
|
|
|
#define PATH_DBG_LEVEL 1
|
|
|
|
//
|
|
// Since we don't accelerate these, we only hook them for analysys purposes.
|
|
// Otherwise, skip the entire file.
|
|
//
|
|
#if NULL_STROKEFILL || PROFILE_DRIVER
|
|
|
|
//
|
|
// Table to convert ROP2 codes to ROP3 codes.
|
|
//
|
|
|
|
extern BYTE Rop2ToRop3[]; // See paint.c
|
|
|
|
|
|
//
|
|
// Driver profiling stuff.
|
|
// Gets compiled out in a free bulid.
|
|
//
|
|
#if PROFILE_DRIVER
|
|
void DumpStrokeAndFillInfo(INT acc, SURFOBJ* pso, MIX mix, BRUSHOBJ* pbo);
|
|
#else
|
|
#define DumpStrokeAndFillInfo(acc, pso, mix, pbo)
|
|
#endif
|
|
|
|
/**************************************************************************\
|
|
* DrvStrokeAndFillPath *
|
|
* *
|
|
* We don't currently accelerate this, but we hook it for analysis. *
|
|
* *
|
|
\**************************************************************************/
|
|
|
|
BOOL DrvStrokeAndFillPath
|
|
(
|
|
SURFOBJ *pso,
|
|
PATHOBJ *ppo,
|
|
CLIPOBJ *pco,
|
|
XFORMOBJ *pxo,
|
|
BRUSHOBJ *pboStroke,
|
|
LINEATTRS *plineattrs,
|
|
BRUSHOBJ *pboFill,
|
|
POINTL *pptlBrushOrg,
|
|
MIX mix,
|
|
FLONG flOptions
|
|
)
|
|
{
|
|
#if NULL_STROKEFILL
|
|
{
|
|
if (pointer_switch) return TRUE;
|
|
}
|
|
#endif
|
|
|
|
DISPDBG((PATH_DBG_LEVEL, "DrvStrokeAndFillPath.\n"));
|
|
|
|
//
|
|
// Dump info on what is being punted to a file.
|
|
//
|
|
DumpStrokeAndFillInfo(0, pso, mix, pboStroke);
|
|
|
|
//
|
|
// Punt it back to GDI.
|
|
//
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ==================================================================
|
|
|
|
#if PROFILE_DRIVER
|
|
void DumpStrokeAndFillInfo(
|
|
INT acc,
|
|
SURFOBJ* pso,
|
|
MIX mix,
|
|
BRUSHOBJ* pbo)
|
|
{
|
|
|
|
PPDEV ppdev;
|
|
|
|
ppdev = (PPDEV) (pso ? pso->dhpdev : 0);
|
|
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// Profiling info to keep track of what GDI is asking us to do.
|
|
//
|
|
if (!ppdev)
|
|
{
|
|
RIP(("DrvStrokeAndFillPath() with no clipOBJ and no PDEV!\n"));
|
|
}
|
|
else
|
|
{
|
|
|
|
fprintf(ppdev->pfile,"DrvStrokeAndFillPath: ");
|
|
|
|
fprintf(ppdev->pfile,"(PUNT) ");
|
|
|
|
//
|
|
// Check the DEST
|
|
//
|
|
fprintf(ppdev->pfile,"DEST=%s ", (ppdev ? "FB" : "HOST?") );
|
|
|
|
//
|
|
// Check the MIX
|
|
//
|
|
fprintf(ppdev->pfile,"Mix=0x%08X ", mix);
|
|
|
|
//
|
|
// Type of pattern.
|
|
//
|
|
if (pbo == NULL)
|
|
fprintf(ppdev->pfile,"BRUSH=NONE ");
|
|
|
|
else if (pbo->iSolidColor == 0xFFFFFFFF )
|
|
{
|
|
fprintf(ppdev->pfile,"BRUSH=PATTERN ");
|
|
}
|
|
else
|
|
{
|
|
fprintf(ppdev->pfile,"BRUSH=SOLID ");
|
|
fprintf(ppdev->pfile,"COLOR = 0x%08X ",(pbo->iSolidColor));
|
|
}
|
|
|
|
fprintf(ppdev->pfile,"\n");
|
|
fflush(ppdev->pfile);
|
|
}
|
|
}
|
|
#endif // PROFILE_DRIVER
|
|
|
|
#endif
|