mirror of
https://github.com/nickshanks/ResKnife.git
synced 2024-12-22 17:30:15 +00:00
1 line
2.8 KiB
C
1 line
2.8 KiB
C
#include "Hex Editor.h"
|
|
|
|
/*!
|
|
* @header HexWindow
|
|
* @discussion This is my data structure for saving all data which pertains to one editing session. Each window has one and only one associated HexWindow class.
|
|
*/
|
|
|
|
/*!
|
|
* @class HexWindow
|
|
* @abstract Stors data pertinanet to a window.
|
|
* @discussion This class is stored in the refcon of the window, and contains all the methods necessary to maintain the window's groovy looks :-)
|
|
*/
|
|
|
|
typedef class HexWindow
|
|
{
|
|
/*! @var window Stores the Mac OS <tt>WindowRef</tt> pertaining to this window. */
|
|
WindowRef window;
|
|
/*! @var header Header control (the grey bar at the top of the window). */
|
|
ControlRef header;
|
|
/*! @var left Left hand side static text control (in the header). */
|
|
ControlRef left;
|
|
/*! @var right Right hand side static text control (in the header). */
|
|
ControlRef right;
|
|
/*! @var scrollbar Scroll bar down the right hand side */
|
|
ControlRef scrollbar;
|
|
#if !TARGET_API_MAC_CARBON
|
|
/*! @var themeSavvy True if this window is using an Appearance Manager WDEF. (Also used to determine if Appearance controls should be drawn if this window.) */
|
|
Boolean themeSavvy;
|
|
#endif
|
|
|
|
public: // all these variables should be private
|
|
// non-controls version
|
|
/*! @var hexRect The text well in which hexadecimal is drawn */
|
|
Rect hexRect;
|
|
/*! @var asciiRect The text well in which ASCII is drawn */
|
|
Rect asciiRect;
|
|
/*! @var selStart offset of first char of selection */
|
|
UInt32 selStart;
|
|
/*! @var selEnd if selEnd == selStart, no selection exists */
|
|
UInt32 selEnd;
|
|
/*! @var timer blinks the insertion point */
|
|
EventLoopTimerRef timer;
|
|
|
|
Handle data;
|
|
Boolean editingHex; // currently editing in hexadecimal?
|
|
Boolean editedHigh; // already typed part of this char
|
|
Boolean activeWindow; // is this window the user focus?
|
|
Boolean insertionPointVisable;
|
|
SInt8 hexChar; // the data currently being typed
|
|
|
|
UInt32 firstline; // first line of valid data
|
|
UInt32 lastline; // last line of valid data
|
|
UInt32 topline; // line at top of screen
|
|
UInt32 bottomline; // line at bottom of screen
|
|
|
|
public:
|
|
// methods
|
|
HexWindow( WindowRef newWindow = null );
|
|
~HexWindow( void );
|
|
// events
|
|
/*!
|
|
* @function BoundsChanging
|
|
*/
|
|
OSStatus BoundsChanging( EventRef event );
|
|
/*!
|
|
* @function BoundsChanged
|
|
*/
|
|
OSStatus BoundsChanged( EventRef event );
|
|
/*!
|
|
* @function ContentClick
|
|
*/
|
|
OSStatus ContentClick( EventRef event );
|
|
/*!
|
|
* @function DrawContent
|
|
*/
|
|
OSStatus DrawContent( EventRef event = null );
|
|
/*!
|
|
* @function UpdateHexInfo
|
|
*/
|
|
OSStatus UpdateHexInfo( void );
|
|
/*!
|
|
* @function InsertBytes
|
|
*/
|
|
Boolean InsertBytes( void *data, signed long length, unsigned long offset );
|
|
friend OSStatus Plug_InitInstance( Plug_PlugInRef plug, Plug_ResourceRef resource );
|
|
} HexWindow, *HexWindowPtr; |