//================================================================
// Xe UI toolkit
//
// XeBase
//  Common elements between XePrimitive and XeManager
//  This is not a true Widget class, just an instance-record
//  extension for shadows etc.
//
// AUTHOR:  Gabor Nagy
// DATE:    2026-Mar-01 14:48:44
//
// Copyright (C) 1996-2026 by Gabor Nagy. All rights reserved.
//================================================================
#ifndef _XeBaseP_h
#define _XeBaseP_h

#include <Xe/XeP.h>

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


//================================
// Instance definition
//================================
// Instance part
//================================
typedef struct
{
// Resources
//
	XeCoordinate   ShadowThickness;
	XeCoord2       MarginSize;XeCoordinate  MarginLeft, MarginRight, MarginTop, MarginBottom;

	EPointer       UserData[2];

	XeString                ToolTipString;                   // ToolTip compound string
	char*                   ToolTipStringUTF8;               // ToolTip plain string
	EListA_s(, XeStringBinarySegment, ToolTipStringBinarySegments);
	EInt32_2                ToolTipStringSize;


// Internal variables
//
	XeWidget        ToolTipShellW, ToolTipLabelW;
	XeIntervalId    ToolTipTimerId;

	EList(, EKeyRec, KeyTable);              // Key callbacks (see libsrc/Input.c)
} XeBasePart;


extern void         _XeBaseInit(XeWidget PW, XeBasePart* PXeBase,  const EArg* PArgs, const int PNArgs);
extern void         _XeBaseFree(XeWidget PW, XeBasePart* PXeBase);
extern XeBasePart*  XeWidgetGetBase(XeWidget PW);


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

#endif // _XeBaseP_h
