![]() |
Cockatrice 2026-06-01-Development-3.1.0-beta.3
A virtual tabletop for multiplayer card games
|
#include <select_zone.h>
Classes | |
| struct | StackLayoutParams |
| Parameters describing a vertical card stack's geometry. More... | |
| struct | ZoneLayout |
| Result of computing a vertical stack layout. More... | |
Public Member Functions | |
| SelectZone (CardZoneLogic *logic, QGraphicsItem *parent=nullptr) | |
| ~SelectZone () override | |
| void | onCardAdded (CardItem *addedCard) override |
| Called when a card is added to this zone. Default: reparents card to this item. | |
| void | escapeClipForHover (QGraphicsItem *card) |
| Temporarily reparents a card from the clip container to this zone so hover scaling is visible beyond clip bounds. Safe no-op if no clip container exists. Coordinates are preserved (clip container is at (0,0) with no transform). | |
| void | restoreClipAfterHover (QGraphicsItem *card) |
| Restores a hover-escaped card back to the clip container. Guards against zone transitions that already reparented the card. | |
| Public Member Functions inherited from CardZone | |
| int | type () const override |
| virtual void | handleDropEvent (const QList< CardDragItem * > &dragItem, CardZoneLogic *startZone, const QPoint &dropPoint)=0 |
| CardZone (CardZoneLogic *logic, QGraphicsItem *parent=nullptr) | |
| void | retranslateUi () |
| CardZoneLogic * | getLogic () const |
| void | setMenu (QMenu *_menu, QAction *_doubleClickAction=0) |
| Public Member Functions inherited from AbstractGraphicsItem | |
| AbstractGraphicsItem (QGraphicsItem *parent=nullptr) | |
Static Public Member Functions | |
| static SelectZone * | findOwningSelectZone (const QGraphicsItem *card) |
| Finds the SelectZone that owns a card, regardless of whether the card is parented to the zone directly or to its clip container. Returns nullptr if not in a SelectZone. | |
Protected Member Functions | |
| StackLayoutParams | buildStackParams (qreal minOffset=0.0) const |
| Builds StackLayoutParams from the current card list and zone geometry. | |
| int | calcDropIndexFromY (qreal dropY, qreal minOffset=0.0) const |
| Computes the card index at a given y-coordinate within the zone's vertical layout. Returns 0 if the zone has no cards or the offset is zero. | |
| void | layoutCardsVertically (const StackLayoutParams ¶ms) |
| Positions cards vertically with alternating left/right x-offsets. | |
| void | restoreStaleEscapedCards () |
| Restores any cards that were hover-escaped but whose hover state was not properly cleaned up. Call at the start of reorganizeCards() in zones that use a clip container. | |
| void | setupClipContainer (std::optional< qreal > zValue=std::nullopt) |
| Creates a clip container child item that clips card overflow to zone bounds. Cards entering this zone are reparented to this container by the onCardAdded override. Disables zone-level child clipping; clipping is delegated to the container. | |
| void | updateClipRect () |
| Updates the clip container rect to match this zone's current boundingRect(). | |
| void | mouseMoveEvent (QGraphicsSceneMouseEvent *event) override |
| void | mousePressEvent (QGraphicsSceneMouseEvent *event) override |
| void | mouseReleaseEvent (QGraphicsSceneMouseEvent *event) override |
| Protected Member Functions inherited from CardZone | |
| void | mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event) override |
| void | mousePressEvent (QGraphicsSceneMouseEvent *event) override |
| virtual void | reorganizeCards ()=0 |
| virtual QPointF | closestGridPoint (const QPointF &point) |
| QMenu * | getMenu () const |
| Protected Member Functions inherited from AbstractGraphicsItem | |
| void | paintNumberEllipse (int number, int radius, const QColor &color, int position, int count, QPainter *painter) |
Static Protected Member Functions | |
| static ZoneLayout | computeZoneLayout (const StackLayoutParams ¶ms) |
| Computes layout for a vertical card stack (effective offset and start position). | |
Static Protected Attributes | |
| static constexpr qreal | MIN_CARD_VISIBLE = 10.0 |
| Minimum visible pixels of each card's top edge when stacking compresses offsets in tight zones. | |
Private Attributes | |
| QPointF | selectionOrigin |
| QSet< CardItem * > | cardsInSelectionRect |
| QGraphicsRectItem * | cardClipContainer = nullptr |
| Invisible clipping parent for cards; owned by Qt parent-child tree (parented to this zone). Created by setupClipContainer(); null when no clip container is active. | |
Additional Inherited Members | |
| Public Types inherited from CardZone | |
| enum | { Type = typeZone } |
| Public Slots inherited from CardZone | |
| bool | showContextMenu (const QPoint &screenPos) |
| Protected Attributes inherited from CardZone | |
| QMenu * | menu |
| QAction * | doubleClickAction |
A CardZone where the cards are laid out, with each card directly interactable by clicking.
| SelectZone::SelectZone | ( | CardZoneLogic * | logic, |
| QGraphicsItem * | parent = nullptr ) |
|
override |
|
protected |
Builds StackLayoutParams from the current card list and zone geometry.
|
protected |
Computes the card index at a given y-coordinate within the zone's vertical layout. Returns 0 if the zone has no cards or the offset is zero.
|
staticprotected |
Computes layout for a vertical card stack (effective offset and start position).
Three regimes:
When the stack fits with room to spare, it is centered vertically.
| void SelectZone::escapeClipForHover | ( | QGraphicsItem * | card | ) |
Temporarily reparents a card from the clip container to this zone so hover scaling is visible beyond clip bounds. Safe no-op if no clip container exists. Coordinates are preserved (clip container is at (0,0) with no transform).
|
static |
Finds the SelectZone that owns a card, regardless of whether the card is parented to the zone directly or to its clip container. Returns nullptr if not in a SelectZone.
|
protected |
Positions cards vertically with alternating left/right x-offsets.
Cards alternate between left and right margins (5px padding from zone edges): even-indexed cards at left, odd-indexed at right. Cards are assigned ascending z-values.
| params | Stack layout geometry parameters (use allowBottomOverflow to control overflow) |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overridevirtual |
Called when a card is added to this zone. Default: reparents card to this item.
Virtual so subclasses (e.g. SelectZone) can override parenting behavior — the Qt signal connection in CardZone's constructor dispatches through the vtable.
Reimplemented from CardZone.
| void SelectZone::restoreClipAfterHover | ( | QGraphicsItem * | card | ) |
Restores a hover-escaped card back to the clip container. Guards against zone transitions that already reparented the card.
|
protected |
Restores any cards that were hover-escaped but whose hover state was not properly cleaned up. Call at the start of reorganizeCards() in zones that use a clip container.
|
protected |
Creates a clip container child item that clips card overflow to zone bounds. Cards entering this zone are reparented to this container by the onCardAdded override. Disables zone-level child clipping; clipping is delegated to the container.
| zValue | Optional z-value for the clip container (e.g. ZValues::CARD_BASE) |
|
protected |
Updates the clip container rect to match this zone's current boundingRect().
|
private |
Invisible clipping parent for cards; owned by Qt parent-child tree (parented to this zone). Created by setupClipContainer(); null when no clip container is active.
|
private |
|
staticconstexprprotected |
Minimum visible pixels of each card's top edge when stacking compresses offsets in tight zones.
|
private |