//========================================================================
// Xe UI toolkit
//
// XeArrowButton
// Private  header file
//
// AUTHOR:  Gabor Nagy
// DATE:    2026-May-28 22:15:46
//
// Copyright (C) 1996-2026 by Gabor Nagy. All rights reserved.
//========================================================================
#ifndef _XeArrowButtonP_h
#define _XeArrowButtonP_h

#include <Xe/PrimitiveP.h>
#include <Xe/ArrowButton.h>

#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
extern "C" {
#endif


//================================
// Class definition
//================================
#define XeArrowButtonClassCore\
	XePrimitiveClassCore

typedef struct _XeArrowButtonClass
{
	XeArrowButtonClassCore;
} XeArrowButtonClass;

extern XeArrowButtonClass  _XeArrowButton;


//================================
// Instance definition
//================================
// Instance part
//================================
typedef struct
{
// Resources
//
	XeColor         ArmColor;
	XeColor         ForegroundColor;
	XeColor         ArrowActiveColor, ArrowArmColor;

	XeCallbackList  ArmCallback, DisarmCallback, ActivateCallback;

	XeCoordinate    ArrowShadowThickness;
	uint16_t        ShadowType;
	uint8_t         Direction, ArrowBehavior;
	uint8_t         ButtonOrientation;  // For determining gradient direction

	int             ArrowAspect;  // Length of arrow / width * 1000

// Private variables
//
	int             DefShadowSpacing;
	EBool           Active, Armed;
	uint8_t         DragMode;
} XeArrowButtonPart;


//================================
// Instance record
//================================
typedef struct _XeArrowButtonRec
{
	XeWidgetCore;
	XeBasePart         Base;
	XePrimitivePart    Primitive;
	XeArrowButtonPart  ArrowButton;
} XeArrowButtonRec;


#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
}	// Close scope of 'extern "C"' declaration
#endif

#endif // _XeArrowButtonP_h
