Cockatrice 2026-06-01-Development-3.1.0-beta.3
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
HandZone Class Reference

#include <hand_zone.h>

Inheritance diagram for HandZone:
[legend]
Collaboration diagram for HandZone:
[legend]

Public Slots

void updateOrientation ()
Public Slots inherited from CardZone
bool showContextMenu (const QPoint &screenPos)

Public Member Functions

 HandZone (HandZoneLogic *_logic, int _zoneHeight, QGraphicsItem *parent=nullptr)
void handleDropEvent (const QList< CardDragItem * > &dragItems, CardZoneLogic *startZone, const QPoint &dropPoint) override
QRectF boundingRect () const override
void paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
void reorganizeCards () override
void sortHand (const QList< CardList::SortOption > &options)
void setWidth (qreal _width)
Public Member Functions inherited from SelectZone
 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
 CardZone (CardZoneLogic *logic, QGraphicsItem *parent=nullptr)
void retranslateUi ()
CardZoneLogicgetLogic () const
void setMenu (QMenu *_menu, QAction *_doubleClickAction=0)
Public Member Functions inherited from AbstractGraphicsItem
 AbstractGraphicsItem (QGraphicsItem *parent=nullptr)

Private Slots

void updateBg ()

Private Attributes

qreal width = 0.0
qreal zoneHeight

Additional Inherited Members

Public Types inherited from CardZone
enum  { Type = typeZone }
Static Public Member Functions inherited from SelectZone
static SelectZonefindOwningSelectZone (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 inherited from SelectZone
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 &params)
 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 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 inherited from SelectZone
static ZoneLayout computeZoneLayout (const StackLayoutParams &params)
 Computes layout for a vertical card stack (effective offset and start position).
Protected Attributes inherited from CardZone
QMenu * menu
QAction * doubleClickAction
Static Protected Attributes inherited from SelectZone
static constexpr qreal MIN_CARD_VISIBLE = 10.0
 Minimum visible pixels of each card's top edge when stacking compresses offsets in tight zones.

Constructor & Destructor Documentation

◆ HandZone()

HandZone::HandZone ( HandZoneLogic * _logic,
int _zoneHeight,
QGraphicsItem * parent = nullptr )
Here is the call graph for this function:

Member Function Documentation

◆ boundingRect()

QRectF HandZone::boundingRect ( ) const
override
Here is the call graph for this function:
Here is the caller graph for this function:

◆ handleDropEvent()

void HandZone::handleDropEvent ( const QList< CardDragItem * > & dragItems,
CardZoneLogic * startZone,
const QPoint & dropPoint )
overridevirtual

Implements CardZone.

Here is the call graph for this function:

◆ paint()

void HandZone::paint ( QPainter * painter,
const QStyleOptionGraphicsItem * option,
QWidget * widget )
override
Here is the call graph for this function:

◆ reorganizeCards()

void HandZone::reorganizeCards ( )
overridevirtual

Implements CardZone.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setWidth()

void HandZone::setWidth ( qreal _width)
Here is the call graph for this function:

◆ sortHand()

void HandZone::sortHand ( const QList< CardList::SortOption > & options)
Here is the call graph for this function:

◆ updateBg

void HandZone::updateBg ( )
privateslot
Here is the caller graph for this function:

◆ updateOrientation

void HandZone::updateOrientation ( )
slot
Here is the call graph for this function:

Member Data Documentation

◆ width

qreal HandZone::width = 0.0
private

◆ zoneHeight

qreal HandZone::zoneHeight
private

The documentation for this class was generated from the following files: