Restore original 'green', slight update on
auto color selection vs. background
This commit is contained in:
parent
c1aa6d7142
commit
0434b36074
|
|
@ -42,21 +42,23 @@ typedef tPrintData *tpPrintData; /* Zeiger darauf */
|
||||||
#define pPrintData(g) ((tpPrintData)(g->devdep))
|
#define pPrintData(g) ((tpPrintData)(g->devdep))
|
||||||
|
|
||||||
/* externals */
|
/* externals */
|
||||||
void WaitForIdle(void); /* Warte, bis keine Events da */
|
|
||||||
|
void WaitForIdle(void); /* wait until no events */
|
||||||
|
extern void wincolor_init(COLORREF* ColorTable, int noc);
|
||||||
|
|
||||||
/* lokale Variablen */
|
/* lokale Variablen */
|
||||||
static HFONT PlotFont = NULL; /* Font-Merker */
|
static HFONT PlotFont = NULL;
|
||||||
static HFONT OldFont = NULL;
|
static HFONT OldFont = NULL;
|
||||||
#define NumLines 7 /* Anzahl der LineStyles */
|
#define NumLines 7 /* number of LineStyles */
|
||||||
static int LineTable[NumLines]; /* Speicher fuer die LineStyles */
|
static int LineTable[NumLines]; /* LineStyle memory */
|
||||||
static HDC PrinterDC = NULL; /* Device Context */
|
static HDC PrinterDC = NULL; /* Device Context */
|
||||||
#define NumPrintColors 2 /* vordef. Farben */
|
#define NumPrintColors 23 /* number of pre-defined colors */
|
||||||
static COLORREF ColorTable[NumPrintColors];/* Speicher fuer die Farben */
|
static COLORREF ColorTable[NumPrintColors]; /* color memory */
|
||||||
static int PrinterWidth = 1000; /* Breite des Papiers */
|
static int PrinterWidth = 1000; /* paper width */
|
||||||
static int PrinterHeight = 1000; /* Hoehe des Papiers */
|
static int PrinterHeight = 1000; /* paper height */
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
Drucker-Initialisierung
|
printer initialization
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
void WPRINT_PrintInit(HWND hwnd)
|
void WPRINT_PrintInit(HWND hwnd)
|
||||||
|
|
@ -156,39 +158,33 @@ int WPRINT_Init(void)
|
||||||
pd.hSetupTemplate = NULL;
|
pd.hSetupTemplate = NULL;
|
||||||
|
|
||||||
/* Default-Drucker initialisieren */
|
/* Default-Drucker initialisieren */
|
||||||
(void) PrintDlg(&pd);
|
(void) PrintDlg( &pd);
|
||||||
|
|
||||||
/* Speicher freigeben */
|
/* Speicher freigeben */
|
||||||
if (pd.hDevMode) {
|
if( pd.hDevMode) GlobalFree( pd.hDevMode);
|
||||||
GlobalFree(pd.hDevMode);
|
if( pd.hDevNames) GlobalFree( pd.hDevNames);
|
||||||
}
|
|
||||||
if (pd.hDevNames) {
|
|
||||||
GlobalFree(pd.hDevNames);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* DC holen */
|
/* DC holen */
|
||||||
PrinterDC = pd.hDC;
|
PrinterDC = pd.hDC;
|
||||||
if (!PrinterDC) return 1;
|
if (!PrinterDC) return 1;
|
||||||
|
|
||||||
/* Abmasze bestimmen */
|
/* Abmasze bestimmen */
|
||||||
PrinterWidth = GetDeviceCaps(PrinterDC, HORZRES);
|
PrinterWidth = GetDeviceCaps( PrinterDC, HORZRES);
|
||||||
PrinterHeight = GetDeviceCaps(PrinterDC, VERTRES);
|
PrinterHeight = GetDeviceCaps( PrinterDC, VERTRES);
|
||||||
pWidth = GetDeviceCaps(PrinterDC, HORZSIZE);
|
pWidth = GetDeviceCaps( PrinterDC, HORZSIZE);
|
||||||
pHeight = GetDeviceCaps(PrinterDC, VERTSIZE);
|
pHeight = GetDeviceCaps( PrinterDC, VERTSIZE);
|
||||||
|
|
||||||
/* Mapping Mode setzen (fuer Kreise) */
|
/* Mapping Mode setzen (fuer Kreise) */
|
||||||
if (pWidth > pHeight) {
|
if ( pWidth > pHeight)
|
||||||
/* Querformat */
|
/* Querformat */
|
||||||
PrinterWidth = (PrinterHeight * pWidth) / pHeight;
|
PrinterWidth = (PrinterHeight * pWidth) / pHeight;
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
/* Hochformat */
|
/* Hochformat */
|
||||||
PrinterHeight = (PrinterWidth * pHeight) / pWidth;
|
PrinterHeight = (PrinterWidth * pHeight) / pWidth;
|
||||||
}
|
|
||||||
|
|
||||||
SetMapMode(PrinterDC, MM_ISOTROPIC);
|
SetMapMode( PrinterDC, MM_ISOTROPIC);
|
||||||
SetWindowExtEx(PrinterDC, PrinterWidth, PrinterHeight, NULL);
|
SetWindowExtEx( PrinterDC, PrinterWidth, PrinterHeight, NULL);
|
||||||
SetViewportExtEx(PrinterDC, PrinterWidth, PrinterHeight, NULL);
|
SetViewportExtEx( PrinterDC, PrinterWidth, PrinterHeight, NULL);
|
||||||
|
|
||||||
/* nicht hoeher als breit zeichnen */
|
/* nicht hoeher als breit zeichnen */
|
||||||
if (pWidth < pHeight) {
|
if (pWidth < pHeight) {
|
||||||
|
|
@ -203,8 +199,7 @@ int WPRINT_Init(void)
|
||||||
dispdev->numcolors = NumPrintColors;
|
dispdev->numcolors = NumPrintColors;
|
||||||
|
|
||||||
/* Farben initialisieren */
|
/* Farben initialisieren */
|
||||||
ColorTable[0] = RGB(255,255,255); /* Weisz */
|
wincolor_init(ColorTable, NumPrintColors);
|
||||||
ColorTable[1] = RGB(0, 0, 0); /* Schwarz */
|
|
||||||
|
|
||||||
/* LineStyles initialisieren */
|
/* LineStyles initialisieren */
|
||||||
LineTable[0] = PS_SOLID;
|
LineTable[0] = PS_SOLID;
|
||||||
|
|
@ -217,16 +212,16 @@ int WPRINT_Init(void)
|
||||||
|
|
||||||
/* Font */
|
/* Font */
|
||||||
if (!PlotFont) {
|
if (!PlotFont) {
|
||||||
PlotFont = CreateFont(0,0,0,0, FW_DONTCARE, FALSE, FALSE, FALSE,
|
PlotFont = CreateFont( 0,0,0,0, FW_DONTCARE, FALSE, FALSE, FALSE,
|
||||||
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
|
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
|
||||||
PROOF_QUALITY, FIXED_PITCH, NULL);
|
PROOF_QUALITY, FIXED_PITCH, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Abort-Prozedur setzen */
|
/* Abort-Prozedur setzen */
|
||||||
SetAbortProc(PrinterDC, WPRINT_Abort);
|
SetAbortProc( PrinterDC, WPRINT_Abort);
|
||||||
}
|
}
|
||||||
/* fertig */
|
/* fertig */
|
||||||
return 0;
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -239,14 +234,13 @@ int WPRINT_Init(void)
|
||||||
|
|
||||||
int WPRINT_NewViewport(GRAPH * graph)
|
int WPRINT_NewViewport(GRAPH * graph)
|
||||||
{
|
{
|
||||||
|
|
||||||
TEXTMETRIC tm;
|
TEXTMETRIC tm;
|
||||||
tpPrintData pd;
|
tpPrintData pd;
|
||||||
DOCINFO di;
|
DOCINFO di;
|
||||||
|
|
||||||
/* Parameter testen */
|
/* Parameter testen */
|
||||||
if (!graph) {
|
if (!graph) return 1;
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initialisiere, falls noch nicht geschehen */
|
/* Initialisiere, falls noch nicht geschehen */
|
||||||
if (WPRINT_Init() != 0) {
|
if (WPRINT_Init() != 0) {
|
||||||
|
|
@ -258,16 +252,15 @@ int WPRINT_NewViewport(GRAPH * graph)
|
||||||
pd = calloc(1, sizeof(tPrintData));
|
pd = calloc(1, sizeof(tPrintData));
|
||||||
if (!pd) return 1;
|
if (!pd) return 1;
|
||||||
graph->devdep = pd;
|
graph->devdep = pd;
|
||||||
graph->n_byte_devdep = sizeof(tPrintData);
|
|
||||||
|
|
||||||
/* Setze den Color-Index */
|
/* Setze den Color-Index */
|
||||||
pd->ColorIndex = 0;
|
pd->ColorIndex = 0;
|
||||||
|
|
||||||
/* Font setzen */
|
/* Font setzen */
|
||||||
OldFont = SelectObject(PrinterDC, PlotFont);
|
OldFont = SelectObject( PrinterDC, PlotFont);
|
||||||
|
|
||||||
/* Font-Parameter abfragen */
|
/* Font-Parameter abfragen */
|
||||||
if (GetTextMetrics(PrinterDC, &tm)) {
|
if (GetTextMetrics( PrinterDC, &tm)) {
|
||||||
graph->fontheight = tm.tmHeight;
|
graph->fontheight = tm.tmHeight;
|
||||||
graph->fontwidth = tm.tmAveCharWidth;
|
graph->fontwidth = tm.tmAveCharWidth;
|
||||||
}
|
}
|
||||||
|
|
@ -286,28 +279,32 @@ int WPRINT_NewViewport(GRAPH * graph)
|
||||||
graph->absolute.height = PrinterHeight;
|
graph->absolute.height = PrinterHeight;
|
||||||
|
|
||||||
/* Druckauftrag anmelden */
|
/* Druckauftrag anmelden */
|
||||||
di.cbSize = sizeof(DOCINFO);
|
di.cbSize = sizeof( DOCINFO);
|
||||||
di.lpszDocName = graph->plotname;
|
di.lpszDocName = graph->plotname;
|
||||||
di.lpszOutput = NULL;
|
di.lpszOutput = NULL;
|
||||||
if (StartDoc(PrinterDC, &di) <= 0) {
|
if (StartDoc( PrinterDC, &di) <= 0) return 1;
|
||||||
return 1;
|
if (StartPage( PrinterDC) <= 0) return 1;
|
||||||
}
|
|
||||||
if (StartPage(PrinterDC) <= 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* titel drucken */
|
/* titel drucken */
|
||||||
if (graph->plotname) {
|
if (graph->plotname) {
|
||||||
UINT align;
|
UINT align;
|
||||||
align = GetTextAlign(PrinterDC);
|
align = GetTextAlign( PrinterDC);
|
||||||
SetTextAlign(PrinterDC, TA_RIGHT | TA_TOP | TA_NOUPDATECP);
|
SetTextAlign( PrinterDC, TA_RIGHT | TA_TOP | TA_NOUPDATECP);
|
||||||
TextOut(PrinterDC, PrinterWidth-graph->fontwidth, 1, graph->plotname,
|
#ifdef EXT_ASC
|
||||||
(int) strlen(graph->plotname));
|
TextOut(PrinterDC, PrinterWidth - graph->fontwidth, 1, graph->plotname,
|
||||||
SetTextAlign(PrinterDC, align);
|
(int)strlen(graph->plotname));
|
||||||
|
#else
|
||||||
|
wchar_t* wtext;
|
||||||
|
wtext = TMALLOC(wchar_t, 2 * strlen(graph->plotname) + 1);
|
||||||
|
MultiByteToWideChar(CP_UTF8, 0, graph->plotname, -1, wtext, 2 * strlen(graph->plotname) + 1);
|
||||||
|
TextOutW(PrinterDC, PrinterWidth - graph->fontwidth, 1, wtext, 2 * (int)strlen(graph->plotname) + 1);
|
||||||
|
tfree(wtext);
|
||||||
|
#endif
|
||||||
|
SetTextAlign( PrinterDC, align);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fertig */
|
/* fertig */
|
||||||
return 0;
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int WPRINT_Close(void)
|
int WPRINT_Close(void)
|
||||||
|
|
@ -348,8 +345,6 @@ int WPRINT_DrawLine(int x1, int y1, int x2, int y2, bool isgrid)
|
||||||
|
|
||||||
/* Farben/Dicke */
|
/* Farben/Dicke */
|
||||||
ColIndex = pd->ColorIndex;
|
ColIndex = pd->ColorIndex;
|
||||||
if (ColIndex > 1)
|
|
||||||
ColIndex = 1;
|
|
||||||
|
|
||||||
MoveToEx(PrinterDC, x1, PrinterHeight - y1, NULL);
|
MoveToEx(PrinterDC, x1, PrinterHeight - y1, NULL);
|
||||||
NewPen = CreatePen( LineTable[pd->LineIndex], 0, ColorTable[ColIndex] );
|
NewPen = CreatePen( LineTable[pd->LineIndex], 0, ColorTable[ColIndex] );
|
||||||
|
|
@ -380,18 +375,11 @@ int WPRINT_Arc(int x0, int y0, int radius, double theta, double delta_theta)
|
||||||
double dx0;
|
double dx0;
|
||||||
double dy0;
|
double dy0;
|
||||||
|
|
||||||
if (!currentgraph) {
|
if (!currentgraph) return 0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
pd = pPrintData(currentgraph);
|
pd = pPrintData(currentgraph);
|
||||||
if (!pd) {
|
if (!pd) return 0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ColIndex = pd->ColorIndex;
|
ColIndex = pd->ColorIndex;
|
||||||
if (ColIndex > 1) {
|
|
||||||
ColIndex = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
direction = AD_COUNTERCLOCKWISE;
|
direction = AD_COUNTERCLOCKWISE;
|
||||||
if (delta_theta < 0) {
|
if (delta_theta < 0) {
|
||||||
|
|
@ -399,7 +387,7 @@ int WPRINT_Arc(int x0, int y0, int radius, double theta, double delta_theta)
|
||||||
delta_theta = - delta_theta;
|
delta_theta = - delta_theta;
|
||||||
direction = AD_CLOCKWISE;
|
direction = AD_CLOCKWISE;
|
||||||
}
|
}
|
||||||
SetArcDirection(PrinterDC, direction);
|
SetArcDirection( PrinterDC, direction);
|
||||||
|
|
||||||
/* Geometrische Vorueberlegungen */
|
/* Geometrische Vorueberlegungen */
|
||||||
yb = PrinterHeight;
|
yb = PrinterHeight;
|
||||||
|
|
@ -411,17 +399,17 @@ int WPRINT_Arc(int x0, int y0, int radius, double theta, double delta_theta)
|
||||||
r = radius;
|
r = radius;
|
||||||
dx0 = x0;
|
dx0 = x0;
|
||||||
dy0 = y0;
|
dy0 = y0;
|
||||||
xs = (int) (dx0 + (r * cos(theta)));
|
xs = (int)(dx0 + (r * cos(theta)));
|
||||||
ys = (int) (dy0 + (r * sin(theta)));
|
ys = (int)(dy0 + (r * sin(theta)));
|
||||||
xe = (int) (dx0 + (r * cos(theta + delta_theta)));
|
xe = (int)(dx0 + (r * cos(theta + delta_theta)));
|
||||||
ye = (int) (dy0 + (r * sin(theta + delta_theta)));
|
ye = (int)(dy0 + (r * sin(theta + delta_theta)));
|
||||||
|
|
||||||
/* Zeichnen */
|
/* Zeichnen */
|
||||||
NewPen = CreatePen(LineTable[pd->LineIndex], 0, ColorTable[ColIndex] );
|
NewPen = CreatePen( LineTable[pd->LineIndex], 0, ColorTable[ColIndex] );
|
||||||
OldPen = SelectObject(PrinterDC, NewPen);
|
OldPen = SelectObject(PrinterDC, NewPen);
|
||||||
Arc(PrinterDC, left, yb-top, right, yb-bottom, xs, yb-ys, xe, yb-ye);
|
Arc( PrinterDC, left, yb-top, right, yb-bottom, xs, yb-ys, xe, yb-ye);
|
||||||
OldPen = SelectObject(PrinterDC, OldPen);
|
OldPen = SelectObject(PrinterDC, OldPen);
|
||||||
DeleteObject(NewPen);
|
DeleteObject( NewPen);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -432,23 +420,24 @@ int WPRINT_Text(char * text, int x, int y, int degrees)
|
||||||
int ColIndex;
|
int ColIndex;
|
||||||
NG_IGNORE(degrees);
|
NG_IGNORE(degrees);
|
||||||
|
|
||||||
if (!currentgraph) {
|
if (!currentgraph) return 0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
pd = pPrintData(currentgraph);
|
pd = pPrintData(currentgraph);
|
||||||
if (!pd) {
|
if (!pd) return 0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ColIndex = pd->ColorIndex;
|
ColIndex = pd->ColorIndex;
|
||||||
if (ColIndex > 1) {
|
|
||||||
ColIndex = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetTextColor(PrinterDC, ColorTable[ColIndex]);
|
SetTextColor( PrinterDC, ColorTable[ColIndex]);
|
||||||
TextOut(PrinterDC, x, PrinterHeight - y - currentgraph->fontheight,
|
|
||||||
text, (int) strlen(text));
|
#ifdef EXT_ASC
|
||||||
return 0;
|
TextOut(PrinterDC, x, PrinterHeight - y - currentgraph->fontheight, text, (int)strlen(text));
|
||||||
|
#else
|
||||||
|
wchar_t* wtext;
|
||||||
|
wtext = TMALLOC(wchar_t, 2 * strlen(text) + 1);
|
||||||
|
MultiByteToWideChar(CP_UTF8, 0, text, -1, wtext, 2 * strlen(text) + 1);
|
||||||
|
TextOutW(PrinterDC, x, PrinterHeight - y - currentgraph->fontheight, wtext, 2 * (int)strlen(text) + 1);
|
||||||
|
tfree(wtext);
|
||||||
|
#endif
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ static struct colortable ctable[] = {
|
||||||
0, "Gold ",255,215, 0,
|
0, "Gold ",255,215, 0,
|
||||||
0, "GoldenRod ",218,165, 32,
|
0, "GoldenRod ",218,165, 32,
|
||||||
0, "Gray ",127,127,127,
|
0, "Gray ",127,127,127,
|
||||||
0, "Green ", 0,128, 0,
|
0, "Green ", 0,255, 0,
|
||||||
0, "GreenYellow ",173,255, 47,
|
0, "GreenYellow ",173,255, 47,
|
||||||
0, "HoneyDew ",240,255,240,
|
0, "HoneyDew ",240,255,240,
|
||||||
0, "HotPink ",255,105,180,
|
0, "HotPink ",255,105,180,
|
||||||
|
|
@ -152,6 +152,7 @@ static struct colortable ctable[] = {
|
||||||
0, "Tomato ",255, 99, 71,
|
0, "Tomato ",255, 99, 71,
|
||||||
0, "Turquoise ", 64,224,208,
|
0, "Turquoise ", 64,224,208,
|
||||||
0, "Violet ",238,130,238,
|
0, "Violet ",238,130,238,
|
||||||
|
0, "WebGreen ", 0,128, 0,
|
||||||
0, "Wheat ",245,222,179,
|
0, "Wheat ",245,222,179,
|
||||||
0, "White ",255,255,255,
|
0, "White ",255,255,255,
|
||||||
0, "WhiteSmoke ",245,245,245,
|
0, "WhiteSmoke ",245,245,245,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue