bool Card::canBeParent(Card* c) const { if (c == 0) return false; return (suitColor(c->suit()) != suitColor(_suit)) && (_value == c->value() + 1); }
Card::Card(Suit s, unsigned int v) : NSWindow(true, gameWindow, 0, 0, cardWidth, cardHeight, 1, BlackPixel(dpy, 0)) { #ifdef SHAPE if (Option::roundCard() && !initialized) { //Shape boundingMask = XCreateBitmapFromData(dpy, root(), (char*)boundingMask_bits, boundingMask_width, boundingMask_height); clipMask = XCreateBitmapFromData(dpy, root(), (char*)clipMask_bits, clipMask_width, clipMask_height); //Cursor XColor fore, back, xc; Pixmap p, mask; Colormap cm = DefaultColormap(dpy, 0); p = XCreateBitmapFromData(dpy, gameWindow, (char*) cursor_bits, cursor_width, cursor_height); mask = XCreateBitmapFromData(dpy, gameWindow, (char*) cursor_back_bits, cursor_back_width, cursor_back_height); XAllocNamedColor(dpy, cm, "white", &fore, &xc); XAllocNamedColor(dpy, cm, "black", &back, &xc); cursor = XCreatePixmapCursor(dpy, p,mask, &fore, &back, 0, 0); initialized = true; } #endif _parent = 0; _stack = 0; _suit = s; _value = v; _removed = false; makeBitmap(s, v, bitmap); // initialization on X things unsigned long fore, back, hilight; if (suitColor(s) == RedSuit) fore = getColor(dpy, "red"); else fore = getColor(dpy, "black"); back = WhitePixel(dpy, 0); hilight = getColor(dpy, "lightskyblue4"); _usualPixmap = XCreatePixmapFromBitmapData(dpy, gameWindow, bitmap, cardWidth - 2, cardHeight - 2, fore, back, DefaultDepth(dpy, DefaultScreen(dpy))); _hilightedPixmap = XCreatePixmapFromBitmapData(dpy, gameWindow, bitmap, cardWidth - 2, cardHeight - 2, fore, hilight, DefaultDepth(dpy, DefaultScreen(dpy))); selectInput(ButtonPressMask | EnterWindowMask | LeaveWindowMask); backgroundPixmap(_usualPixmap); #ifdef SHAPE if (Option::roundCard()) { XShapeCombineMask(dpy, window(), ShapeBounding, 0, 0, boundingMask, ShapeSet); XShapeCombineMask(dpy, window(), ShapeClip, 0, 0, clipMask, ShapeSet); } #endif NSWindow::move(0, 0); map(); }
Card::Card(Suit s, unsigned int v) : NSWindow(true, gameWindow, 0, 0, cardWidth, cardHeight, 1, XC_BLACK) { if (!initialized) { #ifdef SHAPE if (Option::roundCard()) { //Shape boundingMask = XCreateBitmapFromData(dpy, root(), boundingMask_bits, boundingMask_width, boundingMask_height); clipMask = XCreateBitmapFromData(dpy, root(), clipMask_bits, clipMask_width, clipMask_height); } #endif //Cursor //XColor fore, back, xc; //gi_window_id_t p, mask; //Colormap cm = DefaultColormap(dpy, 0); //p = XCreateBitmapFromData(dpy, gameWindow, (char*) cursor_bits, cursor_width, cursor_height); //mask = XCreateBitmapFromData(dpy, gameWindow, (char*) cursor_back_bits, cursor_back_width, cursor_back_height); //XAllocNamedColor(dpy, cm, "white", &fore, &xc); //XAllocNamedColor(dpy, cm, "black", &back, &xc); //cursor = XCreatePixmapCursor(dpy, p,mask, &fore, &back, 0, 0); #ifdef GIXOK uint16_t *p = gi_create_bitmap_from_data(16, 16, cursor_width, cursor_height, cursor_bits, TRUE,TRUE); uint16_t *mask = gi_create_bitmap_from_data(16, 16, cursor_back_width, cursor_back_height, cursor_back_bits, TRUE,TRUE); cursor = GrNewCursor(16, 16, 8, 0, XC_BLACK, XC_WHITE, p, mask); free(p); free(mask); #endif initialized = true; } _parent = 0; _stack = 0; _suit = s; _value = v; _removed = false; makeBitmap(s, v, bitmap); // initialization on X things unsigned long fore, back, hilight; if (suitColor(s) == RedSuit) fore = getColor( XC_RED); else fore = getColor( XC_BLACK); back = XC_WHITE; hilight = getColor( XC_LIGHTSKYBLUE4); _usualPixmap = gi_create_pixmap_from_bitmap( gameWindow, bitmap, cardWidth - 2, cardHeight - 2, fore, back, gi_screen_format() ); _hilightedPixmap = gi_create_pixmap_from_bitmap( gameWindow, bitmap, cardWidth - 2, cardHeight - 2, fore, hilight, gi_screen_format() ); selectInput(GI_MASK_BUTTON_DOWN | GI_MASK_MOUSE_ENTER | GI_MASK_MOUSE_EXIT); backgroundPixmap(_usualPixmap); #ifdef SHAPE if (Option::roundCard()) { XShapeCombineMask(dpy, window(), ShapeBounding, 0, 0, boundingMask, ShapeSet); XShapeCombineMask(dpy, window(), ShapeClip, 0, 0, clipMask, ShapeSet); } #endif NSWindow::move(0, 0); map(); }