ResKnife/Carbon/Classes/ResourceObject.h

159 lines
4.1 KiB
Objective-C

#include "ResKnife.h"
#include "FileWindow.h" // for friends
#ifndef _ResKnife_ResourceObject_
#define _ResKnife_ResourceObject_
/*!
@header ResourceObject
@discussion Contains all required information for a resource, including it's parent file and whether or not it has been edited since it was last saved (if ever).
*/
/*!
@class ResourceObject
@abstract Opaque
@discussion Mainly consisting of regular controls such as scroll bars and headers, this doesn't do much by it's self.
*/
class ResourceObject
{
/*! @var file The parent file into which this resource is to be saved. */
FileWindowPtr file;
/*! @var next the next resource. */
ResourceObjectPtr next;
// status of resource
// Boolean neverSaved; // resource has never been saved -- cleared on SaveFile()
/*! @var dirty Resource has been modified since the file was last saved if this flag is true. Cleared when SaveFile() is called. */
UInt16 retainCount; // counts the number of times this resource has been loaded minus the number it's been released
Boolean dirty;
// Boolean update; // resource is not synched with temporary file -- cleared on UpdateFile()
Boolean dataFork; // resource represents data fork, only true in files whose resource map is in the resource fork
/*! @var number Item number in the data browser. Deleted resources vacate their number, and it is not replaced if a new resource is created. New resources are appended to the end of the chain, and will always have the highest numbers. */
DataBrowserItemID number;
// classic display parameters
/*! @var nameIconRgn */
RgnHandle nameIconRgn;
/*! @var selected */
Boolean selected;
// resource
/*! @var type */
ResType type;
/*! @var size */
SInt32 size;
/*! @var resID */
SInt16 resID;
/*! @var attribs */
SInt16 attribs;
/*! @var data The actual resource byte stream. */
Handle data;
/*! @var name */
Str255 name;
/* methods */
public:
/*!
@function ResourceObject
@discussion Creator function.
*/
ResourceObject(FileWindowPtr owner = null);
/*!
@function ~ResourceObject
@discussion Destructor function.
*/
~ResourceObject(void);
/*!
@function Retain
@discussion Accessor function.
*/
OSStatus Retain(void);
/*!
@function Release
@discussion Accessor function.
*/
void Release(void);
/*!
@function File
@discussion Accessor function.
*/
FileWindowPtr File(void);
/*!
@function Next
@discussion Accessor function.
*/
ResourceObjectPtr Next(void);
/*!
@function SetDirty
@discussion Accessor function.
*/
void SetDirty(Boolean value);
/*!
@function Dirty
@discussion Accessor function.
*/
Boolean Dirty(void);
/*!
@function Select
@discussion Accessor function.
@param select Pass true to select, false to deselect this resource in the file window.
*/
void Select(Boolean select);
/*!
@function Selected
@discussion Accessor function.
*/
Boolean Selected(void);
/*!
@function Number
@discussion Accessor function.
*/
DataBrowserItemID Number(void);
/*!
@function RepresentsDataFork
@discussion Accessor function.
*/
Boolean RepresentsDataFork(void);
/*!
@function Data
@discussion Accessor function. Warning: This functions returns the ACTUAL data handle - do not dispose of it.
*/
Handle Data(void);
/*!
@function Name
@discussion Accessor function.
*/
UInt8* Name(void);
/*!
@function Size
@discussion Accessor function.
*/
UInt32 Size(void);
/*!
@function Type
@discussion Accessor function.
*/
ResType Type(void);
/*!
@function ID
@discussion Accessor function.
*/
SInt16 ID(void);
/*!
@function Attributes
@discussion Accessor function.
*/
SInt16 Attributes(void);
friend OSStatus FileWindow::ReadResourceMap(void);
friend OSStatus FileWindow::ReadDataFork(OSStatus RFError);
friend OSStatus FileWindow::InitDataBrowser(void);
#if !TARGET_API_MAC_CARBON
friend OSStatus FileWindow::Click(Point mouse, EventModifiers modifiers);
friend OSStatus FileWindow::DrawResourceIcon(ResourceObjectPtr resource, UInt16 line);
#endif
friend OSStatus FileWindow::CreateNewResource(ConstStr255Param name, ResType type, SInt16 resID, SInt16 attribs);
friend OSStatus FileWindow::DisposeResourceMap(void);
};
#endif