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.
340 lines
6.0 KiB
340 lines
6.0 KiB
/*++
|
|
|
|
Copyright (c) 1990-2003 Microsoft Corporation
|
|
|
|
|
|
Module Name:
|
|
|
|
pensetup.c
|
|
|
|
|
|
Abstract:
|
|
|
|
This module contains modules to setup the pen
|
|
|
|
|
|
Author:
|
|
|
|
09-Dec-1993 Thu 19:38:19 created
|
|
|
|
|
|
[Environment:]
|
|
|
|
GDI Device Driver - Plotter.
|
|
|
|
|
|
[Notes:]
|
|
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
|
|
#define DBG_PLOTFILENAME DbgPenSetup
|
|
|
|
|
|
extern HMODULE hPlotUIModule;
|
|
|
|
|
|
#define DBG_PENSETUP 0x00000001
|
|
#define DBG_HELP 0x00000002
|
|
#define DBG_COLOR_CHG 0x00000004
|
|
#define DBG_THICK_CHG 0x00000008
|
|
|
|
DEFINE_DBGVAR(0);
|
|
|
|
//
|
|
// Installed Pen Set: <Pen Set #1>
|
|
// Pen Setup:
|
|
// Pen Set #1: <Currently Installed>
|
|
// Pen Number 1:
|
|
// Pen Number 2:
|
|
// Pen Number 3:
|
|
// Pen Number 4:
|
|
// Pen Number 5:
|
|
// Pen Number 6:
|
|
// Pen Number 7:
|
|
// Pen Number 8:
|
|
// Pen Number 9:
|
|
// Pen Number 10:
|
|
// Pen Number 11:
|
|
// Pen Set #2;
|
|
// Pen Set #3:
|
|
// Pen Set #4: (Currently Installed>
|
|
// Pen Set #5:
|
|
// Pen Set #6:
|
|
// Pen Set #7:
|
|
// Pen Set #8:
|
|
//
|
|
|
|
EXTPUSH PenSetExtPush = {
|
|
|
|
sizeof(EXTPUSH),
|
|
EPF_NO_DOT_DOT_DOT,
|
|
(LPTSTR)IDS_DEFAULT_PENCLR,
|
|
NULL,
|
|
IDI_DEFAULT_PENCLR,
|
|
0
|
|
};
|
|
|
|
|
|
OIDATA OIPenSet = {
|
|
|
|
ODF_PEN | ODF_COLLAPSE | ODF_CALLBACK,
|
|
0,
|
|
OI_LEVEL_2,
|
|
PP_PENSET,
|
|
TVOT_NONE,
|
|
IDS_PENSET_FIRST,
|
|
IDI_PENCLR,
|
|
IDH_PENSET,
|
|
0,
|
|
NULL
|
|
};
|
|
|
|
OPDATA OPPenClr = { 0, IDS_COLOR_FIRST, IDI_COLOR_FIRST, 0, 0, 0 };
|
|
|
|
OIDATA OIPenNum = {
|
|
|
|
ODF_PEN | ODF_COLLAPSE |
|
|
ODF_INC_IDSNAME | ODF_INC_ICONID | ODF_NO_INC_POPDATA,
|
|
0,
|
|
OI_LEVEL_3,
|
|
PP_PEN_NUM,
|
|
TVOT_LISTBOX,
|
|
IDS_PEN_NUM,
|
|
OTS_LBCB_SORT,
|
|
IDH_PEN_NUM,
|
|
0,
|
|
&OPPenClr
|
|
};
|
|
|
|
|
|
|
|
|
|
POPTITEM
|
|
SavePenSet(
|
|
PPRINTERINFO pPI,
|
|
POPTITEM pOptItem
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
|
|
|
|
|
|
Return Value:
|
|
|
|
|
|
|
|
|
|
Author:
|
|
|
|
06-Nov-1995 Mon 18:52:15 created
|
|
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
|
|
{
|
|
PPENDATA pPenData;
|
|
UINT MaxPens;
|
|
UINT i;
|
|
|
|
|
|
pPenData = PI_PPENDATA(pPI);
|
|
MaxPens = (UINT)pPI->pPlotGPC->MaxPens;
|
|
pOptItem++;
|
|
|
|
for (i = 0; i < PRK_MAX_PENDATA_SET; i++) {
|
|
|
|
UINT cPens;
|
|
BOOL SavePen;
|
|
|
|
//
|
|
// Must skip the header
|
|
//
|
|
|
|
pOptItem++;
|
|
cPens = MaxPens;
|
|
SavePen = FALSE;
|
|
|
|
while (cPens--) {
|
|
|
|
if (pOptItem->Flags & OPTIF_CHANGEONCE) {
|
|
|
|
pPenData->ColorIdx = (WORD)pOptItem->Sel;
|
|
SavePen = TRUE;
|
|
}
|
|
|
|
pOptItem++;
|
|
pPenData++;
|
|
}
|
|
|
|
if (SavePen) {
|
|
|
|
if (!SaveToRegistry(pPI->hPrinter,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
MAKELONG(i, MaxPens),
|
|
pPenData - MaxPens)) {
|
|
|
|
PlotUIMsgBox(NULL, IDS_PP_NO_SAVE, MB_ICONSTOP | MB_OK);
|
|
}
|
|
}
|
|
}
|
|
|
|
return(pOptItem);
|
|
}
|
|
|
|
|
|
|
|
|
|
UINT
|
|
CreatePenSetupOI(
|
|
PPRINTERINFO pPI,
|
|
POPTITEM pOptItem,
|
|
POIDATA pOIData
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
|
|
|
|
|
|
Return Value:
|
|
|
|
|
|
|
|
|
|
Author:
|
|
|
|
06-Nov-1995 Mon 16:23:36 created
|
|
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
|
|
{
|
|
PPENDATA pPenData;
|
|
POPTITEM pOI;
|
|
POPTITEM pOIPen;
|
|
POPTTYPE pOTPen;
|
|
EXTRAINFO EI;
|
|
UINT i;
|
|
UINT j;
|
|
UINT MaxPens;
|
|
UINT cPenClr;
|
|
WCHAR Buf[128];
|
|
DWORD dwchSize;
|
|
HRESULT hr;
|
|
|
|
MaxPens = (UINT)pPI->pPlotGPC->MaxPens;
|
|
cPenClr = PC_IDX_TOTAL;
|
|
|
|
if (!pOptItem) {
|
|
|
|
return(((MaxPens + 1) * PRK_MAX_PENDATA_SET) + 1);
|
|
}
|
|
|
|
EI.Size = (UINT)((LoadString(hPlotUIModule,
|
|
IDS_PEN_NUM,
|
|
Buf,
|
|
(sizeof(Buf) / sizeof(WCHAR)) - 1)
|
|
+ 5) * sizeof(WCHAR));
|
|
dwchSize = EI.Size;
|
|
pPenData = PI_PPENDATA(pPI);
|
|
pOTPen = NULL;
|
|
pOIPen = NULL;
|
|
pOI = pOptItem;
|
|
|
|
//
|
|
// First: Create PenSetup: HEADER
|
|
//
|
|
|
|
if (CreateOPTTYPE(pPI, pOI, pOIData, 0, NULL)) {
|
|
|
|
pOI++;
|
|
}
|
|
|
|
//
|
|
// Now Create Each pen set
|
|
//
|
|
|
|
for (i = (UINT)IDS_PENSET_FIRST; i <= (UINT)IDS_PENSET_LAST; i++) {
|
|
|
|
if (CreateOPTTYPE(pPI, pOI, &OIPenSet, 0, NULL)) {
|
|
|
|
pOI->pName = (LPTSTR)UIntToPtr(i);
|
|
pOI->Flags |= OPTIF_EXT_IS_EXTPUSH;
|
|
pOI->pExtPush = &PenSetExtPush;
|
|
}
|
|
|
|
pOI++;
|
|
|
|
for (j = 1; j <= MaxPens; j++, pOI++, pPenData++) {
|
|
|
|
if (CreateOPTTYPE(pPI, pOI, &OIPenNum, cPenClr, &EI)) {
|
|
|
|
if (pOTPen) {
|
|
|
|
pOI->pOptType = pOTPen;
|
|
|
|
} else {
|
|
|
|
pOTPen = pOI->pOptType;
|
|
cPenClr = 0;
|
|
}
|
|
|
|
if (pOIPen) {
|
|
|
|
pOI->pName = pOIPen->pName;
|
|
pOIPen++;
|
|
|
|
} else {
|
|
|
|
pOI->pName = (LPTSTR)EI.pData;
|
|
hr = StringCchPrintfW(pOI->pName, dwchSize, L"%ws%u", Buf, j);
|
|
}
|
|
}
|
|
|
|
pOI->Sel = pPenData->ColorIdx;
|
|
}
|
|
|
|
if (!pOIPen) {
|
|
|
|
EI.Size = 0;
|
|
pOIPen = pOI;
|
|
}
|
|
|
|
pOIPen -= MaxPens;
|
|
}
|
|
|
|
return (UINT)(pOI - pOptItem);
|
|
}
|