InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ScriptData Class Reference

#include <ScriptData.h>

Inheritance diagram for ScriptData:
DOMAttributeValue

Public Types

enum  ScriptDataType {
  s_empty, s_boolean, s_string, s_shortint,
  s_longint, s_longlongint, s_double, s_object,
  s_objectlist, s_list, s_date, s_file,
  s_enumeration, s_unit, s_record, s_stream,
  s_function
}
 
enum  UnitType {
  kXCoordinate, kYCoordinate, kPoints, kTextUnits,
  kTextSizeUnits, kLineUnits
}
 
typedef object_type data_type
 

Public Member Functions

 ScriptData (const ScriptData &other)
 
 ScriptData (int16 integer, bool16 isBoolean=kFalse)
 
 ScriptData (int32 integer)
 
 ScriptData (int64 integer)
 
 ScriptData (ScriptID enumerator)
 
 ScriptData (PMReal real)
 
 ScriptData (const PMString &string)
 
 ScriptData (const WideString &string)
 
 ScriptData (IScript *object)
 
 ScriptData (IPMStream *stream)
 
 ScriptData (const ScriptList &objectList)
 
 ScriptData (const ScriptListData &list)
 
 ScriptData (const ScriptRecordData &record)
 
 ScriptData (uint64 date)
 
 ScriptData (const IDFile &file)
 
virtual ScriptData::ScriptDataType GetType () const
 
virtual bool16 IsEmpty () const
 
void SetBoolean (bool16 boolean)
 
ErrorCode GetBoolean (bool16 *const boolean) const
 
void SetInt16 (int16 integer)
 
ErrorCode GetInt16 (int16 *const integer) const
 
void SetInt32 (int32 integer)
 
ErrorCode GetInt32 (int32 *const integer) const
 
void SetInt64 (int64 integer)
 
ErrorCode GetInt64 (int64 *const integer) const
 
void SetEnumeration (ScriptID enumeration)
 
ErrorCode GetEnumeration (ScriptID *const enumeration) const
 
void SetPMReal (PMReal real)
 
ErrorCode GetPMReal (PMReal *const real) const
 
void SetPMString (const PMString &string)
 
ErrorCode GetPMString (PMString &string) const
 
virtual void SetWideString (const WideString &string)
 
virtual ErrorCode GetWideString (WideString &string) const
 
void SetObject (IScript *object)
 
IScriptQueryObject () const
 
void SetObjectList (const ScriptList &objectList)
 
ErrorCode GetObjectList (ScriptList &objectList) const
 
void SetStream (IPMStream *stream)
 
IPMStreamQueryStream () const
 
void SetFunction (IScriptCoreFunctor *func)
 
IScriptCoreFunctorQueryFunction () const
 
void SetList (const ScriptListData &list)
 
ErrorCode GetList (ScriptListData &list) const
 
void SetRecord (const ScriptRecordData &record)
 
ErrorCode GetRecord (ScriptRecordData &record) const
 
void SetDate (uint64 date)
 
ErrorCode GetDate (uint64 *const date) const
 
void SetFile (const IDFile &file)
 
ErrorCode GetFile (IDFile *const file, const RequestContext &context, bool16 validateFolder=kTrue) const
 
ErrorCode GetFileIfFile (IDFile &file, bool16 validateFolder=kTrue) const
 
void SetUnit (const PMReal &unit, UnitType unitType, const IScript *script, const EngineContext &context)
 
void SetUnit (const PMReal &unit, IUnitOfMeasure *unitOfMeasure)
 
ErrorCode GetUnit (PMReal *const unit, UnitType unitType, const IScript *script, const EngineContext &context, bool16 allowNaN=kFalse) const
 
ErrorCode RetrieveUnit (PMReal *const unit) const
 
ErrorCode ParseUnit (PMReal *const unit, IUnitOfMeasure *unitOfMeasure) const
 
ErrorCode ConvertUnit (PMReal *const real, const ScriptID &unitType, const RequestContext &context) const
 
ErrorCode ConvertUnit (PMString &string) const
 
bool16 IsEqual (const ScriptData &scriptData, const RequestContext &context) const
 
bool16 operator== (const ScriptData &scriptData) const
 
 ScriptData (adobe::move_from< ScriptData > other)
 
ScriptDataoperator= (ScriptData other)
 
virtual void Reset ()
 
virtual void ReadWrite (IPMStream *s, bool16 doPlatformReadWrite=kTrue)
 
PMString GetTypeAsString (const RequestContext &context) const
 
PMString GetValueAsString (const RequestContext &context) const
 
adobe::vector< PMStringGetValueAsVectorOfString (const RequestContext &context) const
 

Friends

bool16 operator!= (const ScriptData &left, const ScriptData &right)
 
void swap (ScriptData &left, ScriptData &right)
 

Detailed Description

ScriptData is a class that can hold any of the data types supported by the scripting architecture.

Member Enumeration Documentation

HOW UNITS WORK On input: The user can pass in a numerical value or a string like "1in" and a ScriptProvider can ask for this data as a unit. If user passed in a string, it will get converted to points accordingly, so for "1in" you'll get 72 points, for 1 we'll check what the horizontal or vertical ruler were when the event came in and convert the value to points. So for example if the user passes in 5 and their horizontal ruler is in ciceros and the ScriptProvider asks for the the horizontal value, we'll assume 5 means 5 ciceros, convert it to the proper number of points and give you back that value.

On output: The provider can call SetUnit, pass in a PMReal representing points and indicate whether the data represents a horizontal or vertical value. We will then convert this value to the appropriate units based on what the user's ruler settings were at the time the event came in.

In scripting DOM verersion CS5 (kCS5ScriptVersion) or later, a measurement unit is added to the script engine's preference. IScriptPreferences. If the preference has a valid measurement unit: On input, if a numerical value is passed in, we assume the type is the one in the preference. On output, the passed in value representing points will be converted to the type stored in the preference.See also IUnitOfMeasureSettings.h for information on unit of measure types

Constructor & Destructor Documentation

ScriptData::ScriptData (adobe::move_from< ScriptDataother)
inline

Movable constructor - assumes ownership of the remote part

Member Function Documentation

ErrorCode ScriptData::ConvertUnit (PMReal *const real,
const ScriptIDunitType,
const RequestContextcontext 
) const

Assume ScriptData holds a value in units of some type, return a value in units corresponding to the enumerated ScriptID

ErrorCode ScriptData::ConvertUnit (PMStringstring) const

Assume ScriptData holds a value in units of some type, return a formatted string

ErrorCode ScriptData::GetFile (IDFile *const file,
const RequestContextcontext,
bool16 validateFolder = kTrue 
) const

Retrieve the value as an IDFile. If the value is a PMString, assume it is a file path.

Parameters
file- the value returned
context- Before CS5, on the MacOS, if the value of the ScriptData object was a PMString, the GetFile method checked first for a HFS path, then for a posix path. As of CS5, the reverse is true. This change is versioned via the RequestContext parameter.
validateFolder- If kTrue, will return a kDirectoryNotFoundError if the parent folder doesn't exist.
Returns
- kSuccess or kNoDataOfTheRequestedTypeError
ErrorCode ScriptData::GetFileIfFile (IDFilefile,
bool16 validateFolder = kTrue 
) const

Retrieve the value as an IDFile IF the value is an IDFile. Does not translate a PMString.

Parameters
file- the value returned
validateFolder- If kTrue, will return a kDirectoryNotFoundError if the parent folder doesn't exist.
Returns
- kSuccess or kNoDataOfTheRequestedTypeError
PMString ScriptData::GetTypeAsString (const RequestContextcontext) const

Convert the type into a string representation

Parameters
contextfor the conversion
Returns
the string representation
ErrorCode ScriptData::GetUnit (PMReal *const unit,
UnitType unitType,
const IScriptscript,
const EngineContextcontext,
bool16 allowNaN = kFalse 
) const

Convert a unit type in ScritData to points and return it. Script providers should call this method to get the value of a unit.

In scripting DOM verersion CS5 (kCS5ScriptVersion) or later, if the script engine's preference has a valid measurement unit, we assume ScriptData hold a value in the preference's unit. unitType is ignored. In earlier versions or if the preference doesn't have a valid measurment type, we assume ScriptData holds a value in units of "unitType".

In kCS5ScriptVersion or later, if the unit value is NaN and allowNaN is kFalse, kNaNError is returned.

PMString ScriptData::GetValueAsString (const RequestContextcontext) const

Convert the value into a string representation

Parameters
contextfor the conversion
Returns
the string representation
adobe::vector<PMString> ScriptData::GetValueAsVectorOfString (const RequestContextcontext) const

Convert the value into a vector of string representation

Parameters
contextfor the conversion
Returns
the vector of string representation
virtual ErrorCode ScriptData::GetWideString (WideStringstring) const
virtual

Gets the value as a WideString.

Parameters
stringOUT The current value as a WideString.
Returns
kSuccess if the value can be represented as a WideString an error code otherwise
bool16 ScriptData::IsEqual (const ScriptDatascriptData,
const RequestContextcontext 
) const

Comparison operator (will call IScript::IsEqual on objects)

ScriptData& ScriptData::operator= (ScriptData other)
inline

operator assignment on a movable type takes parameter by value and consumes it

bool16 ScriptData::operator== (const ScriptDatascriptData) const

Comparison operator (will test IScript* for equality on objects)

ErrorCode ScriptData::ParseUnit (PMReal *const unit,
IUnitOfMeasureunitOfMeasure 
) const

Assume ScriptData holds a value in units of "unitOfMeasure", convert it to points and return it

virtual void ScriptData::ReadWrite (IPMStreams,
bool16 doPlatformReadWrite = kTrue 
)
virtual

ReadWrite this object. Only implemented for non-object data types.

virtual void ScriptData::Reset ()
virtual

Clear this object

ErrorCode ScriptData::RetrieveUnit (PMReal *const unit) const

Assume ScriptData holds a value in units and return it

void ScriptData::SetUnit (const PMRealunit,
UnitType unitType,
const IScriptscript,
const EngineContextcontext 
)

Assume "unit" is a value in points. In scripting DOM verersion CS5 (kCS5ScriptVersion) or later, if the script engine's preference has a valid measurement unit, we convert "unit" to the type stored in the preference. unitType is ignored. In earlier versions or if the preference doesn't have a valid measurment type, we convert "unit" to units of "unitType".

void ScriptData::SetUnit (const PMRealunit,
IUnitOfMeasureunitOfMeasure 
)

Assume "unit" is a value in points, convert it using "unitOfMeasure" and store it

virtual void ScriptData::SetWideString (const WideStringstring)
virtual

Stores a WideString as the value of this instance.

Parameters
stringIN The string value to set.

Friends And Related Function Documentation

bool16 operator!= (const ScriptDataleft,
const ScriptDataright 
)
friend

Comparison operator (will test IScript* for equality on objects)

void swap (ScriptDataleft,
ScriptDataright 
)
friend

Defining swap() ensures efficient swapping of ScriptData objects by swapping the remote parts.