4 * Copyright 1993 Alexandre Julliard
12 static const char PEN_dash
[] = { 5,3 }; /* ----- ----- ----- */
13 static const char PEN_dot
[] = { 1,1 }; /* -- -- -- -- -- -- */
14 static const char PEN_dashdot
[] = { 4,3,2,3 }; /* ---- -- ---- -- */
15 static const char PEN_dashdotdot
[] = { 4,2,2,2,2,2 }; /* ---- -- -- ---- */
16 static const char PEN_alternate
[] = { 1,1 }; /* FIXME */
18 /***********************************************************************
21 HPEN32
X11DRV_PEN_SelectObject( DC
* dc
, HPEN32 hpen
, PENOBJ
* pen
)
23 HPEN32 prevHandle
= dc
->w
.hPen
;
26 dc
->u
.x
.pen
.style
= pen
->logpen
.lopnStyle
& PS_STYLE_MASK
;
27 dc
->u
.x
.pen
.endcap
= pen
->logpen
.lopnStyle
& PS_ENDCAP_MASK
;
28 dc
->u
.x
.pen
.linejoin
= pen
->logpen
.lopnStyle
& PS_JOIN_MASK
;
30 dc
->u
.x
.pen
.width
= pen
->logpen
.lopnWidth
.x
* dc
->vportExtX
/ dc
->wndExtX
;
31 if (dc
->u
.x
.pen
.width
< 0) dc
->u
.x
.pen
.width
= -dc
->u
.x
.pen
.width
;
32 if (dc
->u
.x
.pen
.width
== 1) dc
->u
.x
.pen
.width
= 0; /* Faster */
33 dc
->u
.x
.pen
.pixel
= COLOR_ToPhysical( dc
, pen
->logpen
.lopnColor
);
34 switch(pen
->logpen
.lopnStyle
& PS_STYLE_MASK
)
37 dc
->u
.x
.pen
.dashes
= (char *)PEN_dash
;
38 dc
->u
.x
.pen
.dash_len
= 2;
41 dc
->u
.x
.pen
.dashes
= (char *)PEN_dot
;
42 dc
->u
.x
.pen
.dash_len
= 2;
45 dc
->u
.x
.pen
.dashes
= (char *)PEN_dashdot
;
46 dc
->u
.x
.pen
.dash_len
= 4;
49 dc
->u
.x
.pen
.dashes
= (char *)PEN_dashdotdot
;
50 dc
->u
.x
.pen
.dash_len
= 6;
53 /* FIXME: should be alternating _pixels_ that are set */
54 dc
->u
.x
.pen
.dashes
= (char *)PEN_alternate
;
55 dc
->u
.x
.pen
.dash_len
= 2;