本文整理汇总了C++中PSD类的典型用法代码示例。如果您正苦于以下问题:C++ PSD类的具体用法?C++ PSD怎么用?C++ PSD使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PSD类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GsDestroyPixmap
/* Destroy a pixmap*/
void
GsDestroyPixmap(GR_PIXMAP *pp)
{
GR_PIXMAP *prevpp;
PSD psd = pp->psd;
/* deallocate mem gc*/
psd->FreeMemGC(psd);
/*
* Remove this pixmap from the complete list of pixmaps.
*/
prevpp = listpp;
if (prevpp == pp)
listpp = pp->next;
else {
while (prevpp->next != pp)
prevpp = prevpp->next;
prevpp->next = pp->next;
}
/*
* Forget various information if they related to this
* pixmap. Then finally free the structure.
*/
if (pp == cachepp) {
cachepixmapid = 0;
cachepp = NULL;
}
free(pp);
}
示例2: CreateCompatibleDC
/* return NULL if no driver bitblit available*/
HDC WINAPI
CreateCompatibleDC(HDC hdc)
{
HDC hdcmem;
PSD psd;
PSD mempsd;
/* allow NULL hdc to mean screen*/
psd = hdc? hdc->psd: &scrdev;
/* allocate memory device, if driver doesn't blit will fail*/
mempsd = psd->AllocateMemGC(psd);
if(!mempsd)
return NULL;
/* allocate a DC for DesktopWindow*/
hdcmem = GetDCEx(NULL, NULL, DCX_DEFAULTCLIP);
if(!hdcmem) {
mempsd->FreeMemGC(mempsd);
return NULL;
}
hdcmem->psd = mempsd;
/* select in default bitmap to setup mem device parms*/
SelectObject(hdcmem, (HGDIOBJ)&default_bitmap);
return hdcmem;
}
示例3: GdShowCursor
/**
* Draw the mouse pointer. Save the screen contents underneath
* before drawing. Returns previous cursor state.
*
* @param psd Drawing surface.
* @return 1 iff the cursor was visible, else <= 0
*/
int
GdShowCursor(PSD psd)
{
MWCOORD x;
MWCOORD y;
MWPIXELVAL * saveptr;
MWIMAGEBITS * cursorptr;
MWIMAGEBITS * maskptr;
MWIMAGEBITS curbit, cbits = 0, mbits = 0;
MWPIXELVAL oldcolor;
MWPIXELVAL newcolor;
int oldmode;
int prevcursor = curvisible;
if(++curvisible != 1)
return prevcursor;
oldmode = gr_mode;
gr_mode = MWROP_COPY;
saveptr = cursavbits;
cursavx = curminx;
cursavy = curminy;
cursavx2 = curmaxx;
cursavy2 = curmaxy;
cursorptr = cursorcolor;
maskptr = cursormask;
/*
* Loop through bits, resetting to firstbit at end of each row
*/
curbit = 0;
for (y = curminy; y <= curmaxy; y++) {
if (curbit != MWIMAGE_FIRSTBIT) {
cbits = *cursorptr++;
mbits = *maskptr++;
curbit = MWIMAGE_FIRSTBIT;
}
for (x = curminx; x <= curmaxx; x++) {
if(x >= 0 && x < psd->xvirtres &&
y >= 0 && y < psd->yvirtres) {
oldcolor = psd->ReadPixel(psd, x, y);
if (curbit & mbits) {
newcolor = (curbit&cbits)? curbg: curfg;
if (oldcolor != newcolor)
psd->DrawPixel(psd, x, y, newcolor);
}
*saveptr++ = oldcolor;
}
curbit = MWIMAGE_NEXTBIT(curbit);
if (!curbit) { /* check > one MWIMAGEBITS wide*/
cbits = *cursorptr++;
mbits = *maskptr++;
curbit = MWIMAGE_FIRSTBIT;
}
}
}
gr_mode = oldmode;
return prevcursor;
}
示例4: GdShowCursor
/*
* Draw the mouse pointer. Save the screen contents underneath
* before drawing. Returns previous cursor state.
*/
int
GdShowCursor(PSD psd)
{
MWCOORD x;
MWCOORD y;
MWPIXELVAL * saveptr;
MWIMAGEBITS * cursorptr;
MWIMAGEBITS * maskptr;
MWIMAGEBITS curbit, cbits, mbits;
MWPIXELVAL oldcolor;
MWPIXELVAL newcolor;
int oldmode;
int prevcursor = curvisible;
if(++curvisible != 1)
return prevcursor;
oldmode = gr_mode;
gr_mode = MWMODE_COPY;
saveptr = cursavbits;
cursavx = curminx;
cursavy = curminy;
cursavx2 = curmaxx;
cursavy2 = curmaxy;
cursorptr = cursorcolor;
maskptr = cursormask;
for (y = curminy; y <= curmaxy; y++) {
cbits = *cursorptr++;
mbits = *maskptr++;
curbit = MWIMAGE_FIRSTBIT;
for (x = curminx; x <= curmaxx; x++) {
if(x >= 0 && x < psd->xvirtres &&
y >= 0 && y < psd->yvirtres) {
oldcolor = psd->ReadPixel(psd, x, y);
if (curbit & mbits) {
newcolor = (curbit&cbits)? curbg: curfg;
if (oldcolor != newcolor)
psd->DrawPixel(psd, x, y, newcolor);
}
*saveptr++ = oldcolor;
}
curbit = MWIMAGE_NEXTBIT(curbit);
}
}
gr_mode = oldmode;
return prevcursor;
}
示例5: gen_fillrect
void
gen_fillrect(PSD psd,MWCOORD x1, MWCOORD y1, MWCOORD x2, MWCOORD y2,
MWPIXELVAL c)
{
while(y1 <= y2)
psd->DrawHorzLine(psd, x1, x2, y1++, c);
}
示例6: GdHideCursor
/**
* Restore the screen overwritten by the cursor.
*
* @param psd Drawing surface.
* @return 1 iff the cursor was visible, else <= 0
*/
int
GdHideCursor(PSD psd)
{
MWPIXELVAL * saveptr;
MWCOORD x, y;
int oldmode;
int prevcursor = curvisible;
if(curvisible-- <= 0)
return prevcursor;
oldmode = gr_mode;
gr_mode = MWROP_COPY;
saveptr = cursavbits;
for (y = cursavy; y <= cursavy2; y++) {
for (x = cursavx; x <= cursavx2; x++) {
if(x >= 0 && x < psd->xvirtres &&
y >= 0 && y < psd->yvirtres) {
psd->DrawPixel(psd, x, y, *saveptr++);
}
}
}
gr_mode = oldmode;
return prevcursor;
}
示例7: gen_drawbitmap
/*
* Generalized low level bitmap output routine, called
* only if no clipping is required. Only the set bits
* in the bitmap are drawn, in the foreground color.
*/
void
gen_drawbitmap(PSD psd,COORD x, COORD y, COORD width, COORD height,
const IMAGEBITS *table, PIXELVAL fgcolor)
{
COORD minx;
COORD maxx;
IMAGEBITS bitvalue; /* bitmap word value */
int bitcount; /* number of bits left in bitmap word */
minx = x;
maxx = x + width - 1;
bitcount = 0;
while (height > 0) {
if (bitcount <= 0) {
bitcount = IMAGE_BITSPERIMAGE;
bitvalue = *table++;
}
if (IMAGE_TESTBIT(bitvalue))
psd->DrawPixel(psd, x, y, fgcolor);
bitvalue = IMAGE_SHIFTBIT(bitvalue);
--bitcount;
if (x++ == maxx) {
x = minx;
++y;
--height;
bitcount = 0;
}
}
}
示例8: GdGetScreenInfo
/*
* Return about the screen.
*/
void
GdGetScreenInfo(PSD psd, PMWSCREENINFO psi)
{
psd->GetScreenInfo(psd, psi);
GdGetButtonInfo(&psi->buttons);
GdGetModifierInfo(&psi->modifiers, NULL);
GdGetCursorPos(&psi->xpos, &psi->ypos);
}
示例9: GdSetPortraitMode
/* Set dynamic screen portrait mode, return new mode*/
int
GdSetPortraitMode(PSD psd, int portraitmode)
{
/* set portrait mode if supported*/
if (psd->SetPortrait)
psd->SetPortrait(psd, portraitmode);
return psd->portrait;
}
示例10: fbportrait_fillrect
static void
fbportrait_fillrect(PSD psd,MWCOORD x1, MWCOORD y1, MWCOORD x2, MWCOORD y2,
MWPIXELVAL c)
{
y2 = psd->yvirtres-y2-1;
y1 = psd->yvirtres-y1-1;
x1 = psd->xvirtres-x2-1;
x2 = psd->xvirtres-x1-1;
while(y2 <= y1)
psd->DrawHorzLine(psd, x1, x2, y2++, c);
}
示例11: TextureUpdate
void TextureUpdate(const char *filename, int n)
{
glBindTexture(GL_TEXTURE_2D, texture[n]);
char fullname[256];
PSD psdimage;
CDDSImage image;
int psd = 0;
sprintf(fullname, "textures\\%s.psd", filename);
if (psdimage.Load(fullname))
{
psdimage.Upload2D(texinfo[n].mipmap);
}
else
{
sprintf(fullname, "textures\\%s.dds", filename);
if (image.load(fullname))
{
image.upload_texture2D();
}
}
}
示例12: GdSetPalette
/* set the system palette section to the passed palette entries*/
void
GdSetPalette(PSD psd, int first, int count, MWPALENTRY *palette)
{
int i;
/* no palette management needed if running truecolor*/
if(psd->pixtype != MWPF_PALETTE)
return;
/* bounds check against # of device color entries*/
if(first + count > (int)psd->ncolors)
count = (int)psd->ncolors - first;
if(count >= 0 && first < (int)psd->ncolors) {
psd->SetPalette(psd, first, count, palette);
/* copy palette for GdFind*Color*/
for(i=0; i<count; ++i)
gr_palette[i+first] = palette[i];
}
}
示例13: GdOpenScreen
/**
* Open low level graphics driver.
*
* @return The screen drawing surface.
*/
PSD
GdOpenScreen(void)
{
PSD psd;
MWPALENTRY * stdpal;
psd = scrdev.Open(&scrdev);
if (!psd)
return NULL;
/* assume no user changable palette entries*/
gr_firstuserpalentry = (int)psd->ncolors;
/* set palette according to system colors and devpalX.c*/
switch((int)psd->ncolors) {
#if !defined(NOSTDPAL1) /* don't require stdpal1 if not needed */
case 2: /* 1bpp*/
{
extern MWPALENTRY mwstdpal1[2];
stdpal = mwstdpal1;
}
break;
#endif
#if !defined(NOSTDPAL2) /* don't require stdpal2 if not needed */
case 4: /* 2bpp*/
{
extern MWPALENTRY mwstdpal2[4];
stdpal = mwstdpal2;
}
break;
#endif
#if !defined(NOSTDPAL4)
/* don't require stdpal4 if not needed */
case 8: /* 3bpp - not fully supported*/
case 16: /* 4bpp*/
{
extern MWPALENTRY mwstdpal4[16];
stdpal = mwstdpal4;
}
break;
#endif
#if !defined(NOSTDPAL8) /* don't require large stdpal8 if not needed */
case 256: /* 8bpp*/
{
extern MWPALENTRY mwstdpal8[256];
#if UNIFORMPALETTE
/* don't change uniform palette if alpha blending*/
gr_firstuserpalentry = 256;
#else
/* start after last system-reserved color*/
gr_firstuserpalentry = FIRSTUSERPALENTRY;
#endif
stdpal = mwstdpal8;
}
break;
#endif /* !defined(NOSTDPAL8)*/
default: /* truecolor*/
/* no palette*/
gr_firstuserpalentry = 0;
stdpal = NULL;
}
/* reset next user palette entry, write hardware palette*/
GdResetPalette();
GdSetPalette(psd, 0, (int)psd->ncolors, stdpal);
/* init local vars*/
GdSetMode(MWROP_COPY);
GdSetFillMode(MWFILL_SOLID); /* Set the fill mode to solid */
GdSetForegroundColor(psd, MWRGB(255, 255, 255)); /* WHITE*/
GdSetBackgroundColor(psd, MWRGB(0, 0, 0)); /* BLACK*/
GdSetUseBackground(TRUE);
/* select first builtin font (usually MWFONT_SYSTEM_VAR)*/
//GdSetFont(GdCreateFont(psd, NULL, 0, 0, NULL));
GdSetDash(0, 0); /* No dashing to start */
GdSetStippleBitmap(0,0,0); /* No stipple to start */
#if !NOCLIPPING
#if DYNAMICREGIONS
GdSetClipRegion(psd, GdAllocRectRegion(0, 0, psd->xvirtres, psd->yvirtres));
#else
GdSetClipRects(psd, 0, NULL);
#endif /* DYNAMICREGIONS*/
#endif /* NOCLIPPING*/
/* fill black (actually fill to first palette entry or truecolor 0*/
psd->FillRect(psd, 0, 0, psd->xvirtres-1, psd->yvirtres-1, 0);
return psd;
//.........这里部分代码省略.........
示例14: GdOpenScreen
/*
* Open low level graphics driver
*/
PSD
GdOpenScreen(void)
{
PSD psd;
MWPALENTRY * stdpal;
MWSCREENINFO sinfo;
psd = scrdev.Open(&scrdev);
if (!psd)
return NULL;
GdGetScreenInfo(psd, &sinfo);
gr_pixtype = sinfo.pixtype;
gr_ncolors = sinfo.ncolors;
/* assume no user changable palette entries*/
gr_firstuserpalentry = (int)psd->ncolors;
/* set palette according to system colors and devpalX.c*/
switch((int)psd->ncolors) {
#if !defined(NOSTDPAL1) /* don't require stdpal1 if not needed */
case 2: /* 1bpp*/
{
extern MWPALENTRY mwstdpal1[2];
stdpal = mwstdpal1;
}
break;
#endif
#if !defined(NOSTDPAL2) /* don't require stdpal2 if not needed */
case 4: /* 2bpp*/
{
extern MWPALENTRY mwstdpal2[4];
stdpal = mwstdpal2;
}
break;
#endif
#if !defined(NOSTDPAL4)
/* don't require stdpal4 if not needed */
case 8: /* 3bpp - not fully supported*/
case 16: /* 4bpp*/
{
extern MWPALENTRY mwstdpal4[16];
stdpal = mwstdpal4;
}
break;
#endif
#if !defined(NOSTDPAL8) /* don't require large stdpal8 if not needed */
case 256: /* 8bpp*/
{
extern MWPALENTRY mwstdpal8[256];
#if xxxALPHABLEND
/* don't change uniform palette if alpha blending*/
gr_firstuserpalentry = 256;
#else
/* start after last system-reserved color*/
gr_firstuserpalentry = FIRSTUSERPALENTRY;
#endif
stdpal = mwstdpal8;
}
break;
#endif /* !defined(NOSTDPAL8)*/
default: /* truecolor*/
/* no palette*/
gr_firstuserpalentry = 0;
stdpal = NULL;
}
/* reset next user palette entry, write hardware palette*/
GdResetPalette();
GdSetPalette(psd, 0, (int)psd->ncolors, stdpal);
#if xxxALPHABLEND
/* one-time create alpha lookup table for 8bpp systems (takes ~1 sec)*/
if(psd->ncolors == 256)
init_alpha_lookup();
#endif
#if !NOFONTSORCLIPPING
/* init local vars*/
GdSetMode(MWMODE_COPY);
GdSetForeground(GdFindColor(MWRGB(255, 255, 255))); /* WHITE*/
GdSetBackground(GdFindColor(MWRGB(0, 0, 0))); /* BLACK*/
GdSetUseBackground(TRUE);
GdSetFont(GdCreateFont(psd, MWFONT_SYSTEM_VAR, 0, NULL));
#if DYNAMICREGIONS
GdSetClipRegion(psd,
GdAllocRectRegion(0, 0, psd->xvirtres, psd->yvirtres));
#else
GdSetClipRects(psd, 0, NULL);
#endif /* DYNAMICREGIONS*/
#endif /* NOFONTSORCLIPPING*/
/* fill black (actually fill to first palette entry or truecolor 0*/
psd->FillRect(psd, 0, 0, psd->xvirtres-1, psd->yvirtres-1, 0);
//.........这里部分代码省略.........
示例15: GdCloseScreen
/*
* Close low level graphics driver
*/
void
GdCloseScreen(PSD psd)
{
psd->Close(psd);
}