29#define SDK_VERSION 420
35# define mm * ( 18.0f / 25.4f )
38#define kMaxSheetLenght 20000 mm
243 void FromJson(
const jsonxx::Object&,
float defaultWidth = 0,
float defaultLength = 0 );
245 void Load(
const ACPL::XML::Node* );
246 void Save( ACPL::XML::Node* )
const;
254 return ( which == ePhysical && transverse ) ? width : length;
259 return ( which == ePhysical && transverse ) ? length : width;
264 return ( which == ePhysical && transverse ) ? width - left - right : length - top - bottom;
269 return ( which == ePhysical && transverse ) ? length - top - bottom : width - left - right;
274 return ( which == ePhysical && transverse ) ? bottom : left;
279 return ( which == ePhysical && transverse ) ? top : right;
284 return ( which == ePhysical && transverse ) ? left : top;
289 return ( which == ePhysical && transverse ) ? right : bottom;
310 void FromJson(
const jsonxx::Object&,
float defaultWidth = 0,
float defaultLength = 0 );
312 void Load(
const ACPL::XML::Node* );
313 void Save( ACPL::XML::Node* )
const;
316 inline void Reset() noexcept { ::memset(
this, 0,
sizeof(
TTray) ); }
478 inline bool direct() const noexcept {
return windows || serial || usb; }
480 inline bool direct() const noexcept {
return serial || usb; }
576 char profileName[32];
591#if ACPL_MAC || ACPL_LINUX
596 char windowsDriverFilter[32];
866 Lab[0] = 50; Lab[1] = Lab[2] = 0; p.am.shape =
eAdobeRound; p.am.angle = 0; p.am.frequency = 45;
886 void Load(
const ACPL::XML::Node* );
887 void Save( ACPL::XML::Node* )
const;
895 version( SDK_VERSION ),
899 dotCurves(
nullptr ),
905 deviceScript(
nullptr )
915 delete[] deviceScript;
940 left = top = 3.402823466e+38F;
941 right = bottom = -3.402823466e+38F;
944 inline PageRect(
float x1,
float y1,
float x2,
float y2 )
noexcept
954 if( inBounds.left < left )
955 left = inBounds.left;
956 if( inBounds.top < top )
958 if( inBounds.right > right )
959 right = inBounds.right;
960 if( inBounds.bottom > bottom )
961 bottom = inBounds.bottom;
966 if( inBounds.left > left )
967 left = inBounds.left;
968 if( inBounds.top > top )
970 if( inBounds.right < right )
971 right = inBounds.right;
972 if( inBounds.bottom < bottom )
973 bottom = inBounds.bottom;
1027 ExceptionCode (*Initialize)(
void* obj, ACPL::XML* jobDict,
float dpuX,
float dpuY,
const char* settings );
1035 void (*Terminate)(
void* obj,
bool abort );
1043 bool (*ErrorToName)( ExceptionCode err,
char* errorName );
1050 void (*AddPreview)(
void* obj,
const ACPL::UString& pathToBMP );
1093 DirectState (*DirectPosQuery)(
void* obj,
float& outCoordX,
float& outCoordY );
1094 void (*ObsoleteMethod)();
1110 void (*JobStart)(
void* obj,
const ACPL::UString& jobName, int32_t& copies,
const TMediaSize& mediaSize,
const TTray& tray,
bool hasImageData,
bool hasVectorData );
1117 void (*JobEnd)(
void* obj );
1125 void (*PageRegistrationMarks)(
void* obj, uint32_t nrOfPoints,
const MarkerPosition *
const points );
1146 void (*PageStart)(
void* obj, uint32_t pageNr,
char side,
const ACPL::String& barcode,
const TMediaSize& mediaSize,
const TTray& tray,
const PageRect& imagedRect,
const ACPL::UString& metaPath );
1166 bool (*PageEnd)(
void* obj, int16_t endOffset,
InkUsagePtr& inkUsage );
1172 void (*PanelCut)(
void* obj );
1186 void (*RasterStart)(
void* obj, int32_t x, int32_t y, int32_t width, int32_t height );
1193 void (*RasterEnd)(
void* obj );
1207 void (*ProcessRawBuffer)(
void* obj,
const uint8_t* planeData, int32_t dataBytes, uint8_t planeIdx );
1218 void (*VectorStart)(
void* obj );
1225 void (*VectorEnd)(
void* obj );
1233 void (*Move)(
void* obj, int32_t x, int32_t y );
1242 void (*Line)(
void* obj, int32_t x, int32_t y );
1252 void (*Vertex)(
void* obj, int32_t x, int32_t y,
bool last );
1259 void (*PenUp)(
void* obj );
1265 void (*PenDown)(
void* obj );
1272 void (*CurveStart)(
void* obj );
1279 void (*CurveEnd)(
void* obj );
1288 void (*SetTool)(
void* obj,
const char* settings );
1302 void (*HLMove)(
void* obj,
float x,
float y,
bool closed );
1313 void (*HLLine)(
void* obj,
float x,
float y );
1328 void (*HLBezier)(
void* obj,
float x1,
float y1,
float x2,
float y2,
float x3,
float y3 );
1332 void (*CustomAction)(
void* obj,
int a,
const char* b );
1345 void (*StartOnDemandJob)(
void* obj, Imposition* jobParts,
const ACPL::String& requestID,
const ACPL::UString& jobName );
1356 bool (*RasterRepeat)(
void* obj, uint32_t repeats );
1359 static const ExceptionCode kErrorLookup = 0x4C4B4552;
1360 static const ExceptionCode kErrorRefused = 0x52454655;
1388 ExceptionCode (*Info)( Instance* driverObj,
DriverInfo* info,
const char* settings );
1418 void* (*CreateSession)( Instance* driverObj,
const DriverMethods** methods,
const char* deviceURL );
1425 void (*DisposeSession)( Instance* driverObj,
void* obj );
1436 void (*PrinterStatus)( Instance* driverObj, ACPL::XML* statusDict );
1446 void (*GetPrivateCacheData)( Instance* driverObj, ACPL::Stream& outStream );
1457 void (*SetPrivateCacheData)( Instance* driverObj, ACPL::Stream& inStream );
1471 bool (*UpdateDriver)( Instance* driverObj,
const char* proxy, uint8_t region,
void* hostObj,
DriverInitCB progressCB );
1483 void (*SetHostInterface)( Instance* driverObj,
const char* hostName,
void* hostObj, bool (*hostCB)(
void* hostObj, ACPL::XML& query, ACPL::XML& response ) );
1494 bool (*PrinterQuery)( Instance* driverObj, ACPL::XML& query, ACPL::XML& response );
1502 bool (*StartJobTracking)( Instance* driverObj );
1511 const ACPL::StringList& (*GetInkset)( Instance* driverObj );
1555 DLLAPI
void CALLBACK
ListChannels(
const char* modelName,
const char* param,
char list[4096] );
void FromJson(const jsonxx::Object &)
bool needPreviewAtJobStart
bool deviceStatusWhilePrinting
void ToJson(jsonxx::Object &) const
ACPL::String name
Name of the channel.
ChannelDefinition() noexcept
bool on
Flag to indicate if this channel will be output or not.
ACPL::XML::Node * ToXML() const
void ToJson(jsonxx::Object &) const
bool operator==(const ChannelDefinition &) const
void FromXML(const ACPL::XML::Node &)
ChannelDefinition(const TInk &)
ACPL::String displayName
Display name of the channel if different.
void FromJson(const jsonxx::Object &)
int inkDuty
Amount of overprint of this channel in %, default 100.
ScreenType screening
Screening type of the channel.
void Save(ACPL::XML::Node *) const
void Load(const ACPL::XML::Node *)
bool direct() const noexcept
const ADA::Curve * dotCurves
MarkerPosition(float inX, float inY) noexcept
MarkerPosition() noexcept
PageRect(float x1, float y1, float x2, float y2) noexcept
float Width() const noexcept
float Height() const noexcept
void Union(const PageRect &inBounds) noexcept
void Intersect(const PageRect &inBounds) noexcept
void ToJson(jsonxx::Object &) const
const char * colorName() const noexcept
uint8_t blueNoiseFactor
Multiplication factor to apply on the blue noise of error diffusion or FM screening....
int8_t color[3]
CIELab color to be used when generating previews without access to an ICC profile.
uint32_t dotCount
Number of levels for this channel (ink) including 0. Thus 1 drop size means 2 levels and 2 drop sizes...
char name[32]
Name of the ink. Prepended with the keyword "Light" or "Medium" to indicate the tone of the ink color...
bool isTone() const noexcept
ACPL::XML::Node * ToXML() const
ScreenType screening
Prefered screening type for this ink.
ChannelType type
Channel type of this ink. The ink can either Process, Spot or Special.
float maxDotAmount
Maximum amount of dots for all but large dot to be used for the screening. Range [0-1].
float halftoneAngle
Default halftone angles to be used when the screening is set to halftone.
bool isColor() const noexcept
SpotType halftoneShape
Default halftone shape to be used when the screening is set to halftone.
float halftoneFrequency
Default halftone frequency to be used when the screening is set to halftone.
void FromJson(const jsonxx::Object &)
void FromXML(const ACPL::XML::Node *)
float picoliter[16]
Number of picoliter of the dot. The number of dots is dotCount-1. Only valid when Caps::estimateInfo ...
float length
Maximum physical length/height in AOI units of media it accepts.
void Load(const ACPL::XML::Node *)
float right
Right non-imageable margin.
void Save(ACPL::XML::Node *) const
void ToJson(jsonxx::Object &) const
char name[32]
Name of the tray.
float top
Top non-imageable margin.
float width
Maximum physical width in AOI units of media it accepts.
bool Fits(const TMediaSize &) const noexcept
void FromJson(const jsonxx::Object &, float defaultWidth=0, float defaultLength=0)
float left
Left non-imageable margin.
float bottom
Bottom non-imageable margin.
bool IsEmpty() const noexcept
bool roll
True when the tray is a roll, False when it is sheet fed or a cassette.
DLLAPI void CALLBACK ListChannels(const char *modelName, const char *param, char list[4096])
DLLAPI void CALLBACK PrinterTerminate(Instance *driverObj)
DLLAPI const ModelID *CALLBACK ListModels()
DLLAPI Instance *CALLBACK PrinterInitialize(const char *modelName, const char *deviceURL, const ACPL::XML::Node *options, const InstanceMethods **methods)
@ eErrorDiffusion
Any stochastic (multi level) screening (PrintFactory CED)
@ eContone8
No screening, 8-bit contone data.
@ eAMScreen
Halftones (Shape optimized)
@ eOrganic1
Static Organic FM based screening.
@ eOrganic2
Dynamic Organic FM based screening.
@ eNotDefined
No screening type prefered.
@ eFMScreen
FM mask based screening.
@ eFloydSteinberg
Floyd-Steinberg error diffusion.
@ eContone16
No screening, 16-bit contone data.
@ eChromaticED
Chromatic correct error diffusion, only avalable for CMYK.
@ eAdobeRound
Euclidean round.
@ eAdobeEllipse
Euclidean ellipse.
@ eSpecial
White ink or varnish.
@ eDuplicate
Duplicate of other channel.
@ eSpot
Spot color, do not profile.
@ eDisabled
Disabled channel.
@ eProcess
Process ink, use for profiling.
struct aur::ADA::DriverMethods DriverMethods
@ ePlotterFunctionNotUsed
struct aur::ADA::InstanceMethods InstanceMethods
const ModelID kDriverID[]
struct aur::ADA::ModelID ModelID
const InkUsage * InkUsagePtr
bool(* DriverInitCB)(void *hostObj, ACPL::XML &status)
@ eUseEmbeddedProfileIntent
std::map< ACPL::String, double > InkUsage
SpotType shape
Halftone spot shape.
float angle
Halftone angle.
float frequency
Halftone frequency in lines per inch.
float maxDot
Maximum amount of SM dot sizes for Organic.
int whiteSize
Organic size of the white dot.
int blackSize
Organic size of the black dot.
float maxDot
Maximum amount of SM dot sizes for FM.
int noise
Noise level for FM screening or Error Diffusion.