Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

944 lines
24 KiB

  1. /*
  2. File: PMTemplate.h
  3. Contains: Mac OS X Printing Manager Job Template Interfaces.
  4. Version: QuickTime 7.3
  5. Copyright: (c) 2007 (c) 1999-2001 by Apple Computer, Inc., all rights reserved
  6. Bugs?: For bug reports, consult the following page on
  7. the World Wide Web:
  8. http://developer.apple.com/bugreporter/
  9. */
  10. #ifndef __PMTEMPLATE__
  11. #define __PMTEMPLATE__
  12. #ifndef __CORESERVICES__
  13. #include <CoreServices.h>
  14. #endif
  15. #ifndef __PMTICKET__
  16. #include <PMTicket.h>
  17. #endif
  18. /* An enum to distinguish between different kinds of template entries. Each entry in a template */
  19. /* has a specific type that allows us to determine what other fields and functions are available. */
  20. #if PRAGMA_ONCE
  21. #pragma once
  22. #endif
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. #if PRAGMA_IMPORT
  27. #pragma import on
  28. #endif
  29. #if PRAGMA_STRUCT_ALIGN
  30. #pragma options align=mac68k
  31. #elif PRAGMA_STRUCT_PACKPUSH
  32. #pragma pack(push, 2)
  33. #elif PRAGMA_STRUCT_PACK
  34. #pragma pack(2)
  35. #endif
  36. typedef SInt32 PMValueType;
  37. enum {
  38. kPMValueUndefined = 0, /* Template Entry is unknown or undefined */
  39. kPMValueBoolean = 1, /* A CFBoolean of value true or false. */
  40. kPMValueData = 2, /* A CFData, raw data converted to CFData. Has a default value, but no other constraints */
  41. kPMValueString = 3, /* A CFString. Has a default value, but no other constraints */
  42. kPMValueSInt32 = 4, /* A CFNumber of long type. */
  43. kPMValueSInt32Range = 5, /* A pair of CFNumbers, SInt32s, defining a range. */
  44. kPMValueUInt32 = 6, /* A CFNumber of unsigned long type (which isn't actually defined) */
  45. kPMValueUInt32Range = 7, /* A pair of CFNumber, UInt32s, defining a range. */
  46. kPMValueDouble = 8, /* A CFNumber of double type. */
  47. kPMValueDoubleRange = 9, /* A pair of CFNumbers, doubles, defining a range of values. */
  48. kPMValuePMRect = 10, /* A CFArray of 4 CFNumbers, all doubles. */
  49. kPMValueDate = 11, /* A CFDate, holding date and time. */
  50. kPMValueArray = 12, /* A CFArray, holding an array of values. No way to constrain these. */
  51. kPMValueDict = 13, /* A CFDictionary, which has a default, but no constraints. */
  52. kPMValueTicket = 14 /* A PMTicket will require each key/value be identical - only works for list constraints. */
  53. };
  54. typedef SInt32 PMConstraintType;
  55. enum {
  56. kPMConstraintUndefined = 0, /* Undefined, no constraint checking required. */
  57. kPMConstraintRange = 1, /* Range has a CFArray of two values, both CFTypeRefs */
  58. kPMConstraintList = 2, /* List has an array CFTypeRefs, listing possible values. DefaultValues are CFNumberRef (zero-based index into the list) */
  59. kPMConstraintPrivate = 3 /* Private constraint, not checked by the system. */
  60. };
  61. /* A couple of keys are defined as special cases for the template code, only because it's */
  62. /* a flat structure and the Job ticket is possibly a hierarchy of tickets. We need to be */
  63. /* able to fetch the PaperInfo template information, but the Job Ticket has a separate */
  64. /* ticket, so there is no key defined for fetching PaperInfo ticket from the Job Ticket. */
  65. /* Will fetch the default value and constraint list for valid papers. */
  66. #define kPMTemplatePrelude "com.apple.print.TemplateSpecific"
  67. #define kPMPaperInfoListStr "com.apple.print.TemplateSpecific.PMTemplatePaperInfoTicket"
  68. #define kPMPaperInfoList CFSTR("com.apple.print.TemplateSpecific.PMTemplatePaperInfoTicket")
  69. /* The PMTemplateRef is defined in PMTicket.h to avoid circular references */
  70. /* Functions to create or delete a template */
  71. /*
  72. * PMTemplateCreate()
  73. *
  74. * Availability:
  75. * Non-Carbon CFM: not available
  76. * CarbonLib: not available
  77. * Mac OS X: in version 10.0 and later
  78. */
  79. EXTERN_API_C( OSStatus )
  80. PMTemplateCreate(PMTemplateRef * newTemplate);
  81. /*
  82. * PMTemplateDelete()
  83. *
  84. * Availability:
  85. * Non-Carbon CFM: not available
  86. * CarbonLib: not available
  87. * Mac OS X: in version 10.0 and later
  88. */
  89. EXTERN_API_C( OSStatus )
  90. PMTemplateDelete(PMTemplateRef * oldTemplate);
  91. /* Functions to send to and from XML. Also a function to tell us if the template is locked and */
  92. /* can't be modified. */
  93. /*
  94. * PMTemplateCreateXML()
  95. *
  96. * Availability:
  97. * Non-Carbon CFM: not available
  98. * CarbonLib: not available
  99. * Mac OS X: in version 10.0 and later
  100. */
  101. EXTERN_API_C( OSStatus )
  102. PMTemplateCreateXML(
  103. PMTemplateRef srcTemplate,
  104. CFDataRef * xmlData);
  105. /*
  106. * PMTemplateLoadFromXML()
  107. *
  108. * Availability:
  109. * Non-Carbon CFM: not available
  110. * CarbonLib: not available
  111. * Mac OS X: in version 10.0 and later
  112. */
  113. EXTERN_API_C( OSStatus )
  114. PMTemplateLoadFromXML(
  115. CFDataRef srcData,
  116. PMTemplateRef * destTemplate);
  117. /*
  118. * PMTemplateIsLocked()
  119. *
  120. * Availability:
  121. * Non-Carbon CFM: not available
  122. * CarbonLib: not available
  123. * Mac OS X: in version 10.0 and later
  124. */
  125. EXTERN_API_C( OSStatus )
  126. PMTemplateIsLocked(
  127. PMTemplateRef srcTemplate,
  128. Boolean * locked);
  129. /* Functions to add entries in a template. Each entry describes a value type and constraint */
  130. /* type as well as default and constraint values for a specific key. This key must match the */
  131. /* key we wish to validate in a PMTicket. */
  132. /*
  133. * PMTemplateMakeFullEntry()
  134. *
  135. * Availability:
  136. * Non-Carbon CFM: not available
  137. * CarbonLib: not available
  138. * Mac OS X: in version 10.0 and later
  139. */
  140. EXTERN_API_C( OSStatus )
  141. PMTemplateMakeFullEntry(
  142. PMTemplateRef pmTemplate,
  143. CFStringRef key,
  144. PMValueType valueType,
  145. PMConstraintType constraintType,
  146. CFTypeRef defaultValue,
  147. CFTypeRef constraintValue);
  148. /* This function allows a caller to create the template entry in a series of calls, first to */
  149. /* establish what type of entry it is and then later to set default and constraint values. This */
  150. /* is especially useful for direct (non-cf) access to create template entries. There are various */
  151. /* specialized functions for adding the default and cosntraint values with standard "C" types. */
  152. /*
  153. * PMTemplateMakeEntry()
  154. *
  155. * Availability:
  156. * Non-Carbon CFM: not available
  157. * CarbonLib: not available
  158. * Mac OS X: in version 10.0 and later
  159. */
  160. EXTERN_API_C( OSStatus )
  161. PMTemplateMakeEntry(
  162. PMTemplateRef pmTemplate,
  163. CFStringRef key,
  164. PMValueType valueType,
  165. PMConstraintType constraintType);
  166. /* The following functions update an already created entry. */
  167. /*
  168. * PMTemplateSetCFDefaultValue()
  169. *
  170. * Availability:
  171. * Non-Carbon CFM: not available
  172. * CarbonLib: not available
  173. * Mac OS X: in version 10.0 and later
  174. */
  175. EXTERN_API_C( OSStatus )
  176. PMTemplateSetCFDefaultValue(
  177. PMTemplateRef pmTemplate,
  178. CFStringRef key,
  179. CFTypeRef defaultValue);
  180. /*
  181. * PMTemplateSetSInt32DefaultValue()
  182. *
  183. * Availability:
  184. * Non-Carbon CFM: not available
  185. * CarbonLib: not available
  186. * Mac OS X: in version 10.0 and later
  187. */
  188. EXTERN_API_C( OSStatus )
  189. PMTemplateSetSInt32DefaultValue(
  190. PMTemplateRef pmTemplate,
  191. CFStringRef key,
  192. SInt32 defaultValue);
  193. /*
  194. * PMTemplateSetSInt32RangeDefaultValue()
  195. *
  196. * Availability:
  197. * Non-Carbon CFM: not available
  198. * CarbonLib: not available
  199. * Mac OS X: in version 10.0 and later
  200. */
  201. EXTERN_API_C( OSStatus )
  202. PMTemplateSetSInt32RangeDefaultValue(
  203. PMTemplateRef pmTemplate,
  204. CFStringRef key,
  205. SInt32 min,
  206. SInt32 max);
  207. /*
  208. * PMTemplateSetBooleanDefaultValue()
  209. *
  210. * Availability:
  211. * Non-Carbon CFM: not available
  212. * CarbonLib: not available
  213. * Mac OS X: in version 10.0 and later
  214. */
  215. EXTERN_API_C( OSStatus )
  216. PMTemplateSetBooleanDefaultValue(
  217. PMTemplateRef pmTemplate,
  218. CFStringRef key,
  219. Boolean defaultValue);
  220. /*
  221. * PMTemplateSetDoubleDefaultValue()
  222. *
  223. * Availability:
  224. * Non-Carbon CFM: not available
  225. * CarbonLib: not available
  226. * Mac OS X: in version 10.0 and later
  227. */
  228. EXTERN_API_C( OSStatus )
  229. PMTemplateSetDoubleDefaultValue(
  230. PMTemplateRef pmTemplate,
  231. CFStringRef key,
  232. double defaultValue);
  233. /*
  234. * PMTemplateSetDoubleRangeDefaultValue()
  235. *
  236. * Availability:
  237. * Non-Carbon CFM: not available
  238. * CarbonLib: not available
  239. * Mac OS X: in version 10.0 and later
  240. */
  241. EXTERN_API_C( OSStatus )
  242. PMTemplateSetDoubleRangeDefaultValue(
  243. PMTemplateRef pmTemplate,
  244. CFStringRef key,
  245. double min,
  246. double max);
  247. /*
  248. * PMTemplateSetCFDataDefaultValue()
  249. *
  250. * Availability:
  251. * Non-Carbon CFM: not available
  252. * CarbonLib: not available
  253. * Mac OS X: in version 10.0 and later
  254. */
  255. EXTERN_API_C( OSStatus )
  256. PMTemplateSetCFDataDefaultValue(
  257. PMTemplateRef pmTemplate,
  258. CFStringRef key,
  259. CFDataRef defaultValue);
  260. /*
  261. * PMTemplateSetPMRectDefaultValue()
  262. *
  263. * Availability:
  264. * Non-Carbon CFM: not available
  265. * CarbonLib: not available
  266. * Mac OS X: in version 10.0 and later
  267. */
  268. EXTERN_API_C( OSStatus )
  269. PMTemplateSetPMRectDefaultValue(
  270. PMTemplateRef pmTemplate,
  271. CFStringRef key,
  272. PMRect * defaultValue);
  273. /*
  274. * PMTemplateSetPMTicketDefaultValue()
  275. *
  276. * Availability:
  277. * Non-Carbon CFM: not available
  278. * CarbonLib: not available
  279. * Mac OS X: in version 10.0 and later
  280. */
  281. EXTERN_API_C( OSStatus )
  282. PMTemplateSetPMTicketDefaultValue(
  283. PMTemplateRef pmTemplate,
  284. CFStringRef key,
  285. PMTicketRef defaultValue);
  286. /* Functions to allow various constraints to be set up. */
  287. /*
  288. * PMTemplateSetCFArrayConstraintValue()
  289. *
  290. * Availability:
  291. * Non-Carbon CFM: not available
  292. * CarbonLib: not available
  293. * Mac OS X: in version 10.0 and later
  294. */
  295. EXTERN_API_C( OSStatus )
  296. PMTemplateSetCFArrayConstraintValue(
  297. PMTemplateRef pmTemplate,
  298. CFStringRef key,
  299. CFArrayRef constraintValue);
  300. /*
  301. * PMTemplateSetCFRangeConstraint()
  302. *
  303. * Availability:
  304. * Non-Carbon CFM: not available
  305. * CarbonLib: not available
  306. * Mac OS X: in version 10.0 and later
  307. */
  308. EXTERN_API_C( OSStatus )
  309. PMTemplateSetCFRangeConstraint(
  310. PMTemplateRef pmTemplate,
  311. CFStringRef key,
  312. CFTypeRef min,
  313. CFTypeRef max);
  314. /*
  315. * PMTemplateSetSInt32RangeConstraint()
  316. *
  317. * Availability:
  318. * Non-Carbon CFM: not available
  319. * CarbonLib: not available
  320. * Mac OS X: in version 10.0 and later
  321. */
  322. EXTERN_API_C( OSStatus )
  323. PMTemplateSetSInt32RangeConstraint(
  324. PMTemplateRef pmTemplate,
  325. CFStringRef key,
  326. SInt32 min,
  327. SInt32 max);
  328. /* Note - if the default value is a range, then the constraint should be a pair */
  329. /* of ranges. */
  330. /*
  331. * PMTemplateSetSInt32RangesConstraint()
  332. *
  333. * Availability:
  334. * Non-Carbon CFM: not available
  335. * CarbonLib: not available
  336. * Mac OS X: in version 10.0 and later
  337. */
  338. EXTERN_API_C( OSStatus )
  339. PMTemplateSetSInt32RangesConstraint(
  340. PMTemplateRef pmTemplate,
  341. CFStringRef key,
  342. SInt32 minForMin,
  343. SInt32 maxForMin,
  344. SInt32 minForMax,
  345. SInt32 maxForMax);
  346. /*
  347. * PMTemplateSetDoubleRangeConstraint()
  348. *
  349. * Availability:
  350. * Non-Carbon CFM: not available
  351. * CarbonLib: not available
  352. * Mac OS X: in version 10.0 and later
  353. */
  354. EXTERN_API_C( OSStatus )
  355. PMTemplateSetDoubleRangeConstraint(
  356. PMTemplateRef pmTemplate,
  357. CFStringRef key,
  358. double min,
  359. double max);
  360. /*
  361. * PMTemplateSetDoubleRangesConstraint()
  362. *
  363. * Availability:
  364. * Non-Carbon CFM: not available
  365. * CarbonLib: not available
  366. * Mac OS X: in version 10.0 and later
  367. */
  368. EXTERN_API_C( OSStatus )
  369. PMTemplateSetDoubleRangesConstraint(
  370. PMTemplateRef pmTemplate,
  371. CFStringRef key,
  372. double minForMin,
  373. double maxForMin,
  374. double minForMax,
  375. double maxForMax);
  376. /* A List constraint could be a simple list of SInt32s. */
  377. /*
  378. * PMTemplateSetSInt32ListConstraint()
  379. *
  380. * Availability:
  381. * Non-Carbon CFM: not available
  382. * CarbonLib: not available
  383. * Mac OS X: in version 10.0 and later
  384. */
  385. EXTERN_API_C( OSStatus )
  386. PMTemplateSetSInt32ListConstraint(
  387. PMTemplateRef pmTemplate,
  388. CFStringRef key,
  389. int listSize,
  390. SInt32 * sint32List);
  391. /* Or a list of doubles. */
  392. /*
  393. * PMTemplateSetDoubleListConstraint()
  394. *
  395. * Availability:
  396. * Non-Carbon CFM: not available
  397. * CarbonLib: not available
  398. * Mac OS X: in version 10.0 and later
  399. */
  400. EXTERN_API_C( OSStatus )
  401. PMTemplateSetDoubleListConstraint(
  402. PMTemplateRef pmTemplate,
  403. CFStringRef key,
  404. int listSize,
  405. double * doubleList);
  406. /* A list of rectangles. */
  407. /*
  408. * PMTemplateSetPMRectListConstraint()
  409. *
  410. * Availability:
  411. * Non-Carbon CFM: not available
  412. * CarbonLib: not available
  413. * Mac OS X: in version 10.0 and later
  414. */
  415. EXTERN_API_C( OSStatus )
  416. PMTemplateSetPMRectListConstraint(
  417. PMTemplateRef pmTemplate,
  418. CFStringRef key,
  419. int listSize,
  420. PMRect * rectList);
  421. /* Or a ticket list. */
  422. /*
  423. * PMTemplateSetPMTicketListConstraint()
  424. *
  425. * Availability:
  426. * Non-Carbon CFM: not available
  427. * CarbonLib: not available
  428. * Mac OS X: in version 10.0 and later
  429. */
  430. EXTERN_API_C( OSStatus )
  431. PMTemplateSetPMTicketListConstraint(
  432. PMTemplateRef pmTemplate,
  433. CFStringRef key,
  434. PMTicketRef listTicket);
  435. /* Boolean constraints don't need to be set - the constraint type is enough. */
  436. /* Accessors for reaching specific template entry info based on the key passed in. */
  437. /*
  438. * PMTemplateGetValueType()
  439. *
  440. * Availability:
  441. * Non-Carbon CFM: not available
  442. * CarbonLib: not available
  443. * Mac OS X: in version 10.0 and later
  444. */
  445. EXTERN_API_C( OSStatus )
  446. PMTemplateGetValueType(
  447. PMTemplateRef pmTemplate,
  448. CFStringRef key,
  449. PMValueType * valueType);
  450. /*
  451. * PMTemplateGetConstraintType()
  452. *
  453. * Availability:
  454. * Non-Carbon CFM: not available
  455. * CarbonLib: not available
  456. * Mac OS X: in version 10.0 and later
  457. */
  458. EXTERN_API_C( OSStatus )
  459. PMTemplateGetConstraintType(
  460. PMTemplateRef pmTemplate,
  461. CFStringRef key,
  462. PMConstraintType * constraintType);
  463. /* Fetch the various types of default values. */
  464. /*
  465. * PMTemplateGetCFDefaultValue()
  466. *
  467. * Availability:
  468. * Non-Carbon CFM: not available
  469. * CarbonLib: not available
  470. * Mac OS X: in version 10.0 and later
  471. */
  472. EXTERN_API_C( OSStatus )
  473. PMTemplateGetCFDefaultValue(
  474. PMTemplateRef pmTemplate,
  475. CFStringRef key,
  476. CFTypeRef * defaultValue);
  477. /*
  478. * PMTemplateGetSInt32DefaultValue()
  479. *
  480. * Availability:
  481. * Non-Carbon CFM: not available
  482. * CarbonLib: not available
  483. * Mac OS X: in version 10.0 and later
  484. */
  485. EXTERN_API_C( OSStatus )
  486. PMTemplateGetSInt32DefaultValue(
  487. PMTemplateRef pmTemplate,
  488. CFStringRef key,
  489. SInt32 * defaultValue);
  490. /*
  491. * PMTemplateGetSInt32RangeDefaultValue()
  492. *
  493. * Availability:
  494. * Non-Carbon CFM: not available
  495. * CarbonLib: not available
  496. * Mac OS X: in version 10.0 and later
  497. */
  498. EXTERN_API_C( OSStatus )
  499. PMTemplateGetSInt32RangeDefaultValue(
  500. PMTemplateRef pmTemplate,
  501. CFStringRef key,
  502. SInt32 * min,
  503. SInt32 * max);
  504. /*
  505. * PMTemplateGetBooleanDefaultValue()
  506. *
  507. * Availability:
  508. * Non-Carbon CFM: not available
  509. * CarbonLib: not available
  510. * Mac OS X: in version 10.0 and later
  511. */
  512. EXTERN_API_C( OSStatus )
  513. PMTemplateGetBooleanDefaultValue(
  514. PMTemplateRef pmTemplate,
  515. CFStringRef key,
  516. Boolean * defaultValue);
  517. /*
  518. * PMTemplateGetDoubleDefaultValue()
  519. *
  520. * Availability:
  521. * Non-Carbon CFM: not available
  522. * CarbonLib: not available
  523. * Mac OS X: in version 10.0 and later
  524. */
  525. EXTERN_API_C( OSStatus )
  526. PMTemplateGetDoubleDefaultValue(
  527. PMTemplateRef pmTemplate,
  528. CFStringRef key,
  529. double * defaultValue);
  530. /*
  531. * PMTemplateGetDoubleRangeDefaultValue()
  532. *
  533. * Availability:
  534. * Non-Carbon CFM: not available
  535. * CarbonLib: not available
  536. * Mac OS X: in version 10.0 and later
  537. */
  538. EXTERN_API_C( OSStatus )
  539. PMTemplateGetDoubleRangeDefaultValue(
  540. PMTemplateRef pmTemplate,
  541. CFStringRef key,
  542. double * min,
  543. double * max);
  544. /*
  545. * PMTemplateGetCFDataDefaultValue()
  546. *
  547. * Availability:
  548. * Non-Carbon CFM: not available
  549. * CarbonLib: not available
  550. * Mac OS X: in version 10.0 and later
  551. */
  552. EXTERN_API_C( OSStatus )
  553. PMTemplateGetCFDataDefaultValue(
  554. PMTemplateRef pmTemplate,
  555. CFStringRef key,
  556. CFDataRef * defaultValue);
  557. /*
  558. * PMTemplateGetPMRectDefaultValue()
  559. *
  560. * Availability:
  561. * Non-Carbon CFM: not available
  562. * CarbonLib: not available
  563. * Mac OS X: in version 10.0 and later
  564. */
  565. EXTERN_API_C( OSStatus )
  566. PMTemplateGetPMRectDefaultValue(
  567. PMTemplateRef pmTemplate,
  568. CFStringRef key,
  569. PMRect * defaultValue);
  570. /*
  571. * PMTemplateGetPMTicketDefaultValue()
  572. *
  573. * Availability:
  574. * Non-Carbon CFM: not available
  575. * CarbonLib: not available
  576. * Mac OS X: in version 10.0 and later
  577. */
  578. EXTERN_API_C( OSStatus )
  579. PMTemplateGetPMTicketDefaultValue(
  580. PMTemplateRef pmTemplate,
  581. CFStringRef key,
  582. PMTicketRef * defaultValue);
  583. /* Fetch the various flavors of constraint values. */
  584. /*
  585. * PMTemplateGetCFArrayConstraintValue()
  586. *
  587. * Availability:
  588. * Non-Carbon CFM: not available
  589. * CarbonLib: not available
  590. * Mac OS X: in version 10.0 and later
  591. */
  592. EXTERN_API_C( OSStatus )
  593. PMTemplateGetCFArrayConstraintValue(
  594. PMTemplateRef pmTemplate,
  595. CFStringRef key,
  596. CFArrayRef * constraintValue);
  597. /*
  598. * PMTemplateGetCFRangeConstraintValue()
  599. *
  600. * Availability:
  601. * Non-Carbon CFM: not available
  602. * CarbonLib: not available
  603. * Mac OS X: in version 10.0 and later
  604. */
  605. EXTERN_API_C( OSStatus )
  606. PMTemplateGetCFRangeConstraintValue(
  607. PMTemplateRef pmTemplate,
  608. CFStringRef key,
  609. CFTypeRef * min,
  610. CFTypeRef * max);
  611. /*
  612. * PMTemplateGetSInt32RangeConstraintValue()
  613. *
  614. * Availability:
  615. * Non-Carbon CFM: not available
  616. * CarbonLib: not available
  617. * Mac OS X: in version 10.0 and later
  618. */
  619. EXTERN_API_C( OSStatus )
  620. PMTemplateGetSInt32RangeConstraintValue(
  621. PMTemplateRef pmTemplate,
  622. CFStringRef key,
  623. SInt32 * min,
  624. SInt32 * max);
  625. /*
  626. * PMTemplateGetSInt32RangesConstraintValue()
  627. *
  628. * Availability:
  629. * Non-Carbon CFM: not available
  630. * CarbonLib: not available
  631. * Mac OS X: in version 10.0 and later
  632. */
  633. EXTERN_API_C( OSStatus )
  634. PMTemplateGetSInt32RangesConstraintValue(
  635. PMTemplateRef pmTemplate,
  636. CFStringRef key,
  637. SInt32 * minForMin,
  638. SInt32 * maxForMin,
  639. SInt32 * minForMax,
  640. SInt32 * maxForMax);
  641. /*
  642. * PMTemplateGetDoubleRangeConstraintValue()
  643. *
  644. * Availability:
  645. * Non-Carbon CFM: not available
  646. * CarbonLib: not available
  647. * Mac OS X: in version 10.0 and later
  648. */
  649. EXTERN_API_C( OSStatus )
  650. PMTemplateGetDoubleRangeConstraintValue(
  651. PMTemplateRef pmTemplate,
  652. CFStringRef key,
  653. double * min,
  654. double * max);
  655. /*
  656. * PMTemplateGetDoubleRangesConstraintValue()
  657. *
  658. * Availability:
  659. * Non-Carbon CFM: not available
  660. * CarbonLib: not available
  661. * Mac OS X: in version 10.0 and later
  662. */
  663. EXTERN_API_C( OSStatus )
  664. PMTemplateGetDoubleRangesConstraintValue(
  665. PMTemplateRef pmTemplate,
  666. CFStringRef key,
  667. double * minForMin,
  668. double * maxForMin,
  669. double * minForMax,
  670. double * maxForMax);
  671. /* The following functions need to be called twice, first to determine the length of */
  672. /* the list and a second time, after allocating space, to actually fetch the list.*/
  673. /*
  674. * PMTemplateGetSInt32ListConstraintValue()
  675. *
  676. * Availability:
  677. * Non-Carbon CFM: not available
  678. * CarbonLib: not available
  679. * Mac OS X: in version 10.0 and later
  680. */
  681. EXTERN_API_C( OSStatus )
  682. PMTemplateGetSInt32ListConstraintValue(
  683. PMTemplateRef pmTemplate,
  684. CFStringRef key,
  685. int * listSize,
  686. SInt32 * sint32List);
  687. /*
  688. * PMTemplateGetDoubleListConstraintValue()
  689. *
  690. * Availability:
  691. * Non-Carbon CFM: not available
  692. * CarbonLib: not available
  693. * Mac OS X: in version 10.0 and later
  694. */
  695. EXTERN_API_C( OSStatus )
  696. PMTemplateGetDoubleListConstraintValue(
  697. PMTemplateRef pmTemplate,
  698. CFStringRef key,
  699. int * listSize,
  700. double * doubleList);
  701. /*
  702. * PMTemplateGetPMRectListConstraintValue()
  703. *
  704. * Availability:
  705. * Non-Carbon CFM: not available
  706. * CarbonLib: not available
  707. * Mac OS X: in version 10.0 and later
  708. */
  709. EXTERN_API_C( OSStatus )
  710. PMTemplateGetPMRectListConstraintValue(
  711. PMTemplateRef pmTemplate,
  712. CFStringRef key,
  713. int * listSize,
  714. PMRect * rectList);
  715. /* The Ticket APIs support a "List Ticket" that can hold numerous other tickets, so there is */
  716. /* no need to allocate space for an array in this case. */
  717. /* Always returns length and list at one time. */
  718. /*
  719. * PMTemplateGetListTicketConstraintValue()
  720. *
  721. * Availability:
  722. * Non-Carbon CFM: not available
  723. * CarbonLib: not available
  724. * Mac OS X: in version 10.0 and later
  725. */
  726. EXTERN_API_C( OSStatus )
  727. PMTemplateGetListTicketConstraintValue(
  728. PMTemplateRef pmTemplate,
  729. CFStringRef key,
  730. PMTicketRef * listTicket);
  731. /* Remove an entry from our template. */
  732. /*
  733. * PMTemplateRemoveEntry()
  734. *
  735. * Availability:
  736. * Non-Carbon CFM: not available
  737. * CarbonLib: not available
  738. * Mac OS X: in version 10.0 and later
  739. */
  740. EXTERN_API_C( OSStatus )
  741. PMTemplateRemoveEntry(
  742. PMTemplateRef pmTemplate,
  743. CFStringRef key);
  744. /* Validate a ticket item - passing in the key and the item data. */
  745. /*
  746. * PMTemplateValidateItem()
  747. *
  748. * Availability:
  749. * Non-Carbon CFM: not available
  750. * CarbonLib: not available
  751. * Mac OS X: in version 10.0 and later
  752. */
  753. EXTERN_API_C( OSStatus )
  754. PMTemplateValidateItem(
  755. PMTemplateRef pmTemplate,
  756. CFStringRef key,
  757. CFTypeRef item,
  758. Boolean * validationResults);
  759. /* Move a set of template entries from one template to another. Any entry in the destination */
  760. /* template will be overwritten by an entry with the same key in the source template */
  761. /*
  762. * PMTemplateMergeTemplates()
  763. *
  764. * Availability:
  765. * Non-Carbon CFM: not available
  766. * CarbonLib: not available
  767. * Mac OS X: in version 10.0 and later
  768. */
  769. EXTERN_API_C( OSStatus )
  770. PMTemplateMergeTemplates(
  771. PMTemplateRef sourceTemplate,
  772. PMTemplateRef destTemplate);
  773. /* NOTES:
  774. A few comments about some special template entry types:
  775. Rectangles - We assume a PMRect is four doubles. To verify a Rectangle, we allow the caller to
  776. define a list of rectangles, of which one must match exactly, or, planned for the future, a
  777. range constraint that defines the min and max for horizontal and vertical, as well as the
  778. maximum width and height. For now, only a list of rectangles can be used to validate a rect.
  779. Tickets - To facilitate validating a PaperInfo ticket, we provide a mechanism to construct a
  780. list constraint for a ticket. A given ticket may then be validated by checking each key/value
  781. pair to confirm that it holds exactly the same value as a ticket in the list. There won't be
  782. any range checking for values within the ticket being validated, only a comparison with the
  783. fixed values in the ticket list.
  784. For other tickets, such as Print Settings, or Page Format, we call the validate functions to
  785. confirm that each entry complies with the proper constraint in the template. This allows
  786. for range constraints to be built for some entries, and list constraints for other entries.
  787. */
  788. #if PRAGMA_STRUCT_ALIGN
  789. #pragma options align=reset
  790. #elif PRAGMA_STRUCT_PACKPUSH
  791. #pragma pack(pop)
  792. #elif PRAGMA_STRUCT_PACK
  793. #pragma pack()
  794. #endif
  795. #ifdef PRAGMA_IMPORT_OFF
  796. #pragma import off
  797. #elif PRAGMA_IMPORT
  798. #pragma import reset
  799. #endif
  800. #ifdef __cplusplus
  801. }
  802. #endif
  803. #endif /* __PMTEMPLATE__ */