static void XPSetupForSolidLine(ScrnInfoPtr pScrn, int color, int rop, unsigned int planemask) { TRIDENTPtr pTrident = TRIDENTPTR(pScrn); pTrident->BltScanDirection = 0; REPLICATE(color); TGUI_FMIX(XAAPatternROP[rop]); if (pTrident->Chipset >= PROVIDIA9685) { TGUI_FPATCOL(color); } else { TGUI_FCOLOUR(color); } }
static void TridentSetupForFillRectSolid(ScrnInfoPtr pScrn, int color, int rop, unsigned int planemask) { TRIDENTPtr pTrident = TRIDENTPTR(pScrn); int drawflag = 0; REPLICATE(color); TGUI_FMIX(XAAGetPatternROP(rop)); if (pTrident->Chipset == PROVIDIA9685 || pTrident->Chipset == CYBER9388) { TGUI_FPATCOL(color); } else { drawflag |= PATMONO; TGUI_FCOLOUR(color); } TGUI_DRAWFLAG(pTrident->DrawFlag | SOLIDFILL | drawflag); }
void TridentSetupForDashedLine( ScrnInfoPtr pScrn, int fg, int bg, int rop, unsigned int planemask, int length, unsigned char *pattern ){ TRIDENTPtr pTrident = TRIDENTPTR(pScrn); CARD32 *DashPattern = (CARD32*)pattern; CARD32 NiceDashPattern = DashPattern[0]; NiceDashPattern = *((CARD16 *)pattern) & ((1<<length) - 1); switch(length) { case 2: NiceDashPattern |= NiceDashPattern << 2; case 4: NiceDashPattern |= NiceDashPattern << 4; case 8: NiceDashPattern |= NiceDashPattern << 8; } pTrident->BltScanDirection = 0; REPLICATE(fg); if (pTrident->Chipset == PROVIDIA9685 || pTrident->Chipset == CYBER9388) { TGUI_FPATCOL(fg); if (bg == -1) { pTrident->BltScanDirection |= 1<<12; TGUI_BPATCOL(~fg); } else { REPLICATE(bg); TGUI_BPATCOL(bg); } } else { TGUI_FCOLOUR(fg); if (bg == -1) { pTrident->BltScanDirection |= 1<<12; TGUI_BCOLOUR(~fg); } else { REPLICATE(bg); TGUI_BCOLOUR(bg); } } TGUI_FMIX(XAAGetPatternROP(rop)); pTrident->LinePattern = NiceDashPattern; }
static void TridentSetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int patternx, int patterny, int fg, int bg, int rop, unsigned int planemask) { TRIDENTPtr pTrident = TRIDENTPTR(pScrn); int drawflag = 0; REPLICATE(fg); if (pTrident->Chipset == PROVIDIA9685 || pTrident->Chipset == CYBER9388) TGUI_FPATCOL(fg); else TGUI_FCOLOUR(fg); if (bg == -1) { drawflag |= 1<<12; if (pTrident->Chipset == PROVIDIA9685 || pTrident->Chipset == CYBER9388) TGUI_BPATCOL(~fg); else TGUI_BCOLOUR(~fg); } else { REPLICATE(bg); if (pTrident->Chipset == PROVIDIA9685 || pTrident->Chipset == CYBER9388) TGUI_BPATCOL(bg); else TGUI_BCOLOUR(bg); } if (pTrident->Chipset == PROVIDIA9685 || pTrident->Chipset == CYBER9388) { drawflag |= 7<<18; } TGUI_DRAWFLAG(pTrident->DrawFlag | PAT2SCR | PATMONO | drawflag); TGUI_PATLOC(((patterny * pTrident->PatternLocation) + (patternx * pScrn->bitsPerPixel / 8)) >> 6); TGUI_FMIX(XAAGetPatternROP(rop)); }