1371 |
RESET_FUNCTION(opcode); |
RESET_FUNCTION(opcode); |
1372 |
} |
} |
1373 |
|
|
1374 |
|
static uint8 hatch_patterns[] = { |
1375 |
|
0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0 - bsHorizontal */ |
1376 |
|
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, /* 1 - bsVertical */ |
1377 |
|
0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, /* 2 - bsFDiagonal */ |
1378 |
|
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, /* 3 - bsBDiagonal */ |
1379 |
|
0x08, 0x08, 0x08, 0xff, 0x08, 0x08, 0x08, 0x08, /* 4 - bsCross */ |
1380 |
|
0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81 /* 5 - bsDiagCross */ |
1381 |
|
}; |
1382 |
|
|
1383 |
void |
void |
1384 |
ui_patblt(uint8 opcode, |
ui_patblt(uint8 opcode, |
1385 |
/* dest */ int x, int y, int cx, int cy, |
/* dest */ int x, int y, int cx, int cy, |
1397 |
FILL_RECTANGLE(x, y, cx, cy); |
FILL_RECTANGLE(x, y, cx, cy); |
1398 |
break; |
break; |
1399 |
|
|
1400 |
|
case 2: /* Hatch */ |
1401 |
|
fill = (Pixmap) ui_create_glyph(8, 8, hatch_patterns + brush->pattern[0] * 8); |
1402 |
|
SET_FOREGROUND(bgcolour); |
1403 |
|
SET_BACKGROUND(fgcolour); |
1404 |
|
XSetFillStyle(display, gc, FillOpaqueStippled); |
1405 |
|
XSetStipple(display, gc, fill); |
1406 |
|
XSetTSOrigin(display, gc, brush->xorigin, brush->yorigin); |
1407 |
|
FILL_RECTANGLE(x, y, cx, cy); |
1408 |
|
XSetFillStyle(display, gc, FillSolid); |
1409 |
|
XSetTSOrigin(display, gc, 0, 0); |
1410 |
|
ui_destroy_glyph((HGLYPH) fill); |
1411 |
|
break; |
1412 |
|
|
1413 |
case 3: /* Pattern */ |
case 3: /* Pattern */ |
1414 |
for (i = 0; i != 8; i++) |
for (i = 0; i != 8; i++) |
1415 |
ipattern[7 - i] = brush->pattern[i]; |
ipattern[7 - i] = brush->pattern[i]; |