ResKnife/Hex Editor/Hex Editor.h

154 lines
5.1 KiB
C

#if !TARGET_API_MAC_OS8
#if defined(__APPLE_CC__) // compiling with gcc
#include <Carbon/Carbon.h>
#else // compiling with CodeWarrior, __MWERKS__
#include <Carbon.h>
#endif
#endif
#ifndef _ResKnife_Plug_
#define _ResKnife_Plug_ 1
#include "HostCallbacks.h"
#endif
#ifndef _ResKnife_HexEditor_
#define _ResKnife_HexEditor_
// abbreviations
#define null NULL
#define Use_Nibs 0
#define Use_GWorlds 1
// Easier constants
#define RGBColour RGBColor
// Easier API call names
#define GetWindowRefCon( window ) (long) GetWRefCon( window )
#define SetWindowRefCon( window, refcon ) SetWRefCon( window, refcon )
#define GetWindowTitle( window, string ) GetWTitle( window, string )
#define SetWindowTitle( window, name ) SetWTitle( window, name )
#define InvalidateRect( bounds ) InvalRect( bounds )
#define InvalidateWindowRect( window, bounds ) (OSStatus) InvalWindowRect( window, bounds )
#define RectToRegion( region, rect ) RectRgn( region, rect )
#define SetPoint( point, x, y ) SetPt( point, x, y )
/* apperance.h */
#define SetThemeTextColour( c, d, cd ) (OSStatus) SetThemeTextColor( c, d, cd )
#define IsThemeInColour( d, cd ) (Boolean) IsThemeInColor( d, cd )
#define GetThemeAccentColours( out ) (OSStatus) GetThemeAccentColors( out )
#define SetThemeTextColourForWindow( w, a, d, cd ) (OSStatus) SetThemeTextColorForWindow( w, a, d, cd )
#define GetThemeBrushAsColour( b, d, cd, out ) (OSStatus) GetThemeBrushAsColor( b, d, cd, out )
#define GetThemeTextColour( c, d, cd, out) (OSStatus) GetThemeTextColor( c, d, cd, out)
/* some other file */
#define HilightColour( colour ) HiliteColor( colour )
#define GetPortHilightColour( window, colour ) GetPortHiliteColor( window, colour )
/* Global Variables */
struct globals
{
// application
Str255 fragName;
Str255 prefsName;
// system info
SInt32 systemVersion;
Boolean dragAvailable;
Boolean translucentDrag;
Boolean navAvailable;
Boolean useAppearance;
// colours
RGBColour white; // 0xFFFF, 65535
RGBColour bgColour; // 0xEEEE, 61166
RGBColour sortColour; // 0xDDDD, 56797
RGBColour bevelColour; // 0xAAAA, 43690
RGBColour textColour; // 0x7777, 30583
RGBColour frameColour; // 0x5555, 21845
RGBColour black; // 0x0000, 0
};
/* Preferences */
struct prefs
{
UInt32 version; // == kHexEditorCurrentVersion, when saved to disk allows older prefs to be read in
// highest and lowest chars displayed
UInt8 lowChar;
UInt8 highChar;
UInt8 GWorldDepth;
};
// MacOS versions
const SInt32 kMacOSSevenPointOne = 0x00000710;
const SInt32 kMacOSSevenPointFivePointFive = 0x00000755;
const SInt32 kMacOSEight = 0x00000800;
const SInt32 kMacOSEightPointFive = 0x00000850;
const SInt32 kMacOSEightPointSix = 0x00000860;
const SInt32 kMacOSNine = 0x00000900;
const SInt32 kMacOSNinePointOne = 0x00000910;
const SInt32 kMacOSTen = 0x00001000;
const SInt32 kMacOS71 = kMacOSSevenPointOne;
const SInt32 kMacOS755 = kMacOSSevenPointFivePointFive;
const SInt32 kMacOS8 = kMacOSEight;
const SInt32 kMacOS85 = kMacOSEightPointFive;
const SInt32 kMacOS86 = kMacOSEightPointSix;
const SInt32 kMacOS9 = kMacOSNine;
const SInt32 kMacOS91 = kMacOSNinePointOne;
const SInt32 kMacOSX = kMacOSTen;
/*** APPLE EVENT SUPPORT ***/
const OSType kResEditorAEType = FOUR_CHAR_CODE('ResK');
const OSType kResTransferType = FOUR_CHAR_CODE('rsrc');
enum DragReceiveType // copy & paste uses these too
{
kScrapFlavorTypeHex = FOUR_CHAR_CODE('HEX '),
kScrapFlavorTypeResource = kResTransferType
};
/*** CONSTANTS ***/
const UInt32 kHexEditorCurrentVersion = 0x00030003;
const UInt16 kHeaderHeight = 20;
const UInt16 kScrollBarWidth = 16;
const UInt16 kTextMargin = 5; // top & bottom margin for hand-drawn editing areas
const UInt16 kTextFrameBorder = 9; // border around controls
const UInt16 kTextInnerBuffer = 2; // border within controls
const UInt16 kHexCharWidth = 7;
const UInt16 kHexLineHeight = 11;
const UInt16 kDataBlockWidth = (8*kHexCharWidth);
const UInt16 kOffsetColumnWidth = (10*kHexCharWidth); // no need to consider border on leftmost edge of hex field
const UInt16 kMinimumWindowWidth = kOffsetColumnWidth + (4*kDataBlockWidth) + (3*kHexCharWidth) + kScrollBarWidth;
const UInt16 kDefaultWindowWidth = kMinimumWindowWidth + (4*kDataBlockWidth);
const UInt16 kMinimumWindowHeight = kHeaderHeight + (2*kTextMargin) + (10*kHexLineHeight) +4;
const UInt16 kDefaultWindowHeight = kMinimumWindowHeight + (6*kHexLineHeight);
const UInt32 kHeaderSignature = FOUR_CHAR_CODE('head');
const UInt32 kLeftTextSignature = FOUR_CHAR_CODE('left');
const UInt32 kRightTextSignature = FOUR_CHAR_CODE('rght');
const UInt32 kOffsetTextSignature = FOUR_CHAR_CODE('offs');
const UInt32 kHexTextSignature = FOUR_CHAR_CODE('hex ');
const UInt32 kAsciiTextSignature = FOUR_CHAR_CODE('asci');
const UInt32 kScrollbarSignature = FOUR_CHAR_CODE('scrl');
/* RESOURCES */
enum // menus
{
kEditorMenu = 128
};
enum // windows
{
kFileWindow7 = 128,
kFileWindow8 = 129
};
enum // controls
{
kSystem7ScrollBarControl = 128,
kAppearanceScrollBarControl = 129,
kNormalHeaderControl = 130
};
#endif