SendFaxJob.h
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:15k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. /* $Id: SendFaxJob.h,v 1.8 2008/09/14 10:33:17 faxguy Exp $ */
  2. /*
  3.  * Copyright (c) 1993-1996 Sam Leffler
  4.  * Copyright (c) 1993-1996 Silicon Graphics, Inc.
  5.  * HylaFAX is a trademark of Silicon Graphics
  6.  *
  7.  * Permission to use, copy, modify, distribute, and sell this software and 
  8.  * its documentation for any purpose is hereby granted without fee, provided
  9.  * that (i) the above copyright notices and this permission notice appear in
  10.  * all copies of the software and related documentation, and (ii) the names of
  11.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  12.  * publicity relating to the software without the specific, prior written
  13.  * permission of Sam Leffler and Silicon Graphics.
  14.  * 
  15.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  16.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  17.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  18.  * 
  19.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  20.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  23.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  24.  * OF THIS SOFTWARE.
  25.  */
  26. #ifndef _SendFaxJob_
  27. #define _SendFaxJob_
  28. #include "Str.h"
  29. #include "Array.h"
  30. class SendFaxClient;
  31. typedef u_int FaxNotify;
  32. typedef u_int FaxPageChop;
  33. class SendFaxJob : public fxObj {
  34. public:
  35.     enum { // email notification control
  36. no_notice, // no messages
  37. when_done, // when job is completed
  38. when_requeued // when job is requeued or completed
  39.     };
  40.     enum { // page chopping control
  41. chop_default, // default server setting
  42. chop_none, // chop no pages
  43. chop_all, // chop all pages with trailing white
  44. chop_last // chop last page in each document
  45.     };
  46.     // NB: the SFJ_ prefixes workaround a bug in the AIX xlC compiler
  47.     struct SFJ_stringtag {
  48. const char*  name;
  49. fxStr SendFaxJob::* p;
  50. const char*  def; // NULL is shorthand for ""
  51.     };
  52.     struct SFJ_numbertag {
  53. const char*  name;
  54. u_int SendFaxJob::*p;
  55. u_int  def;
  56.     };
  57.     struct SFJ_floattag {
  58. const char*  name;
  59. float SendFaxJob::*p;
  60. float  def;
  61.     };
  62. private:
  63.     fxStr jobid; // job ID
  64.     fxStr groupid; // job-group ID
  65.     fxStr jobtag; // user-specified job identifier
  66.     fxStr doneop; // job doneop control
  67.     FaxNotify notify; // job notification control
  68.     fxStr mailbox; // mail address for notification
  69.     fxStr tsi; // TSI
  70.     fxStr number; // fax phone number/dialing string
  71.     fxStr subaddr; // subaddress for routing (opt)
  72.     fxStr passwd; // password (opt)
  73.     fxStr external; // displayable version of number (opt)
  74.     fxStr faxnumber; // originating number for setting Caller*ID Number
  75.     fxStr faxname; // originating name for setting Caller*ID Name
  76.     bool autoCover; // if true, auto-generate cover sheet
  77.     bool coverIsTemp; // if true, remove coverFile on exit
  78.     fxStr coverFile; // cover page file
  79.     fxStr coverTemplate; // cover page template file
  80.     fxStr name; // receipient for cover page
  81.     fxStr voicenumber; // rec. voice number for cover page
  82.     fxStr location; // rec. physical location for cover page
  83.     fxStr company; // rec. company identity for cover page
  84.     fxStr comments; // comments for cover page
  85.     fxStr regarding; // regarding info for cover page
  86.     fxStr fromlocation; // rec. from location for cover page
  87.     fxStr fromfax; // rec. from fax for cover page
  88.     fxStr fromvoice; // rec. from voice for cover page
  89.     fxStr fromcompany; // rec. from company for cover page
  90.     bool sendTagLine; // if true, use custom tagline format
  91.     bool useXVRes; // if true, use extended resolutions
  92.     fxStr killTime; // job's time to be killed
  93.     fxStr sendTime; // job's time to be sent
  94.     u_int retryTime; // retry time for failures (secs)
  95.     fxStr tagline; // tag line format string
  96.     float hres, vres; // sending resolution (dpi)
  97.     float pageWidth; // sending page width (mm)
  98.     float pageLength; // sending page length (mm)
  99.     fxStr pageSize; // arg to pass to subprocesses
  100.     int totalPages; // counted pages (for cover sheet)
  101.     u_int maxRetries; // max number times to try send
  102.     u_int maxDials; // max number times to dial telephone
  103.     u_int priority; // scheduling priority
  104.     u_int minsp; // minimum transmit speed
  105.     u_int desiredbr; // upper bound on transmit speed
  106.     u_int desiredst; // min-scanline-time to use
  107.     u_int desiredec; // enable/disable use of ECM
  108.     u_int desireddf; // data format to use
  109.     FaxPageChop pagechop; // page chop handling
  110.     float chopthreshold; // white space threshold for chopping
  111.     u_int skippages; // skip these pages
  112.     u_int skippedpages; // begin page count at this page number + 1
  113.     u_int nocountcover; // don't include these pages in the page count
  114.     bool serverdocover; // server should generate the cover page
  115.     bool ignoremodembusy; // ignore modem busy status
  116.     static SFJ_stringtag strings[];
  117.     static SFJ_numbertag numbers[];
  118.     static SFJ_floattag floats[];
  119.     int getSpeed(const char* value) const;
  120. public:
  121.     SendFaxJob();
  122.     SendFaxJob(const SendFaxJob& other);
  123.     virtual ~SendFaxJob();
  124.     virtual bool initJobs(SendFaxClient& client, fxStr& emsg);
  125.     virtual bool createJob(SendFaxClient& client, fxStr& emsg);
  126.     virtual void setupConfig();
  127.     virtual bool setConfigItem(const char* tag, const char* value);
  128.     const fxStr& getJobID(void) const;
  129.     const fxStr& getGroupID(void) const;
  130.     void setDoneOp(const char*);
  131.     /*
  132.      * Job notification.
  133.      */
  134.     bool setNotification(const char*);// email notification
  135.     void setNotification(FaxNotify);
  136.     FaxNotify getNotification() const;
  137.     void setMailbox(const char*); // email notification address
  138.     const fxStr& getMailbox() const;
  139.     void setJobTag(const char*); // job identifier string
  140.     const fxStr& getJobTag() const;
  141.     /*
  142.      * Job scheduling controls.
  143.      */
  144.     void setRetryTime(u_int); // job retry time (seconds)
  145.     void setRetryTime(const char* v);
  146.     u_int getRetryTime() const;
  147.     void setKillTime(const char*); // job kill time
  148.     const fxStr& getKillTime() const;
  149.     void setSendTime(const char*); // time to initiate tranmission
  150.     const fxStr& getSendTime() const;
  151.     void setMaxRetries(u_int); // maximum attempts to send
  152.     u_int getMaxRetries() const;
  153.     void setMaxDials(u_int); // maximum phone call attempts
  154.     u_int getMaxDials() const;
  155.     void setPriority(int); // job scheduling priority
  156.     void setPriority(const char*);
  157.     int getPriority() const;
  158.     /*
  159.      * Job delivery/envelope support.
  160.      *
  161.      * Note that the delivery subaddress and password are
  162.      * only used when the receiving station supports this
  163.      * optional part of the protocol.  The external form
  164.      * of the dialing string is used in generating cover
  165.      * pages (see below) and when job status is displayed.
  166.      */
  167.     void setTSI(const char*); // TSI
  168.     const fxStr& getTSI() const;
  169.     void setDialString(const char*); // dialing string/phone number
  170.     const fxStr& getDialString() const;
  171.     void setSubAddress(const char*); // destination subaddress for routing
  172.     const fxStr& getSubAddress() const;
  173.     void setPassword(const char*); // transmit password
  174.     const fxStr& getPasswd() const;
  175.     void setExternalNumber(const char*);// displayable version of fax number
  176.     const fxStr& getExternalNumber() const;
  177.     void setFaxNumber(const char*); // Caller*ID Number, also tagline
  178.     void setFaxName(const char*); // Caller*ID Name
  179.     /*
  180.      * Cover page support.
  181.      *
  182.      * If cover pages are automatically generated then the
  183.      * template file and cover page information is passed
  184.      * to a cover page generation procedure that creates the
  185.      * cover page file.  Otherwise cover pages can be
  186.      * suppressed or an application-specified file can be
  187.      * specified instead.
  188.      */
  189.     void setAutoCoverPage(bool); // auto-generate cover page
  190.     bool getAutoCoverPage() const;
  191. // cover page file
  192.     void setCoverPageFile(const char*, bool removeOnExit);
  193.     const fxStr& getCoverPageFile() const;
  194.     void setCoverTemplate(const char*); // cover page template file
  195.     const fxStr& getCoverTemplate() const;
  196.     void setCoverName(const char*); // receipient's name
  197.     const fxStr& getCoverName() const;
  198.     void setCoverLocation(const char*); // receipient's location
  199.     const fxStr& getCoverLocation() const;
  200.     void setCoverCompany(const char*); // receipient's company
  201.     const fxStr& getCoverCompany() const;
  202.     void setCoverRegarding(const char*);// Re: information
  203.     const fxStr& getCoverRegarding() const;
  204.     void setCoverComments(const char*); // other comments
  205.     const fxStr& getCoverComments() const;
  206.     void setCoverVoiceNumber(const char*);// receipient's voice number
  207.     const fxStr& getCoverVoiceNumber() const;
  208.     void setCoverFromLocation(const char*);// sender's location
  209.     const fxStr& getCoverFromLocation() const;
  210.     void setCoverFromFax(const char*); // sender's fax number
  211.     const fxStr& getCoverFromFax() const;
  212.     void setCoverFromVoice(const char*);// sender's voice number
  213.     const fxStr& getCoverFromVoice() const;
  214.     void setCoverFromCompany(const char*);// sender's company
  215.     const fxStr& getCoverFromCompany() const;
  216.     u_int getTotalPages() const; // counted pages (for cover sheet)
  217.     /*
  218.      * Page size support.
  219.      *
  220.      * Page dimensions are specified using the page size database.
  221.      * The transmit resolution is currently limited to 98 or 196
  222.      * lines/inch with the latter possibly ignored if the transmitting
  223.      * modem or receiving device are incapable of supporting it.
  224.      */
  225.     float getPageWidth() const; // sending page width (mm)
  226.     float getPageLength() const; // sending page length (mm)
  227.     const fxStr& getPageSize() const; // page size by name
  228.     bool setPageSize(const char* name);
  229.     void setVResolution(float); // vertical resolution (lines/inch)
  230.     float getVResolution() const;
  231.     void setHResolution(float); // horizontal resolution (lines/inch)
  232.     float getHResolution() const;
  233.     /*
  234.      * Fax session parameter controls.
  235.      */
  236.     void setMinSpeed(int); // minimum signalling rate
  237.     void setMinSpeed(const char* v);
  238.     int getMinSpeed() const;
  239.     void setDesiredSpeed(int); // desired/initial signalling rate
  240.     void setDesiredSpeed(const char* v);
  241.     int getDesiredSpeed() const;
  242.     void setDesiredMST(int); // desired/initial min-scanline time
  243.     void setDesiredMST(const char* v);
  244.     int getDesiredMST() const;
  245.     void setDesiredEC(int e); // desired use of Error Correction mode
  246.     void setDesiredEC(const char* e);
  247.     int getDesiredEC() const;
  248.     void setUseXVRes(bool b); // desired use of extended resolutions
  249.     bool getUseXVRes() const;
  250.     void setDesiredDF(int); // desired data format
  251.     void setDesiredDF(const char*);
  252.     int getDesiredDF() const;
  253.     void setTagLineFormat(const char* v); // job-specific tagline format
  254.     const fxStr& getTagLineFormat() const;
  255.     void setChopHandling(const char*); // page truncation handling
  256.     void setChopHandling(u_int);
  257.     u_int getChopHandling() const;
  258.     void setChopThreshold(float); // threshold (inches) for page chopping
  259.     float getChopThreshold() const;
  260.     void setSkipPages(u_int); // skip these pages
  261.     u_int getSkipPages() const;
  262.     void setSkippedPages(u_int); // start page count here + 1
  263.     u_int getSkippedPages() const;
  264.     void setNoCountCover(u_int); // don't include these pages in counts
  265.     u_int getNoCountCover() const;
  266.     void setServerDoCover(bool); // server should generate cover page
  267.     bool getServerDoCover() const;
  268.     void setIgnoreModemBusy(bool); // ignore modem busy status
  269.     bool getIgnoreModemBusy() const;
  270. };
  271. fxDECLARE_ObjArray(SendFaxJobArray, SendFaxJob)
  272. inline const fxStr& SendFaxJob::getJobID(void) const { return jobid; }
  273. inline const fxStr& SendFaxJob::getGroupID(void) const { return groupid; }
  274. inline FaxNotify SendFaxJob::getNotification() const { return notify; }
  275. inline const fxStr& SendFaxJob::getMailbox() const { return mailbox; }
  276. inline const fxStr& SendFaxJob::getJobTag() const { return jobtag; }
  277. inline u_int SendFaxJob::getRetryTime() const { return retryTime; }
  278. inline const fxStr& SendFaxJob::getKillTime() const { return killTime; }
  279. inline const fxStr& SendFaxJob::getSendTime() const { return sendTime; }
  280. inline u_int SendFaxJob::getMaxRetries() const { return maxRetries; }
  281. inline u_int SendFaxJob::getMaxDials() const { return maxDials; }
  282. inline int SendFaxJob::getPriority() const { return priority; }
  283. inline const fxStr& SendFaxJob::getTSI() const { return tsi; }
  284. inline const fxStr& SendFaxJob::getDialString() const { return number; }
  285. inline const fxStr& SendFaxJob::getSubAddress() const { return subaddr; }
  286. inline const fxStr& SendFaxJob::getPasswd() const { return passwd; }
  287. inline const fxStr& SendFaxJob::getExternalNumber() const{ return external; }
  288. inline bool SendFaxJob::getAutoCoverPage() const { return autoCover; }
  289. inline const fxStr& SendFaxJob::getCoverPageFile() const{ return coverFile; }
  290. inline const fxStr& SendFaxJob::getCoverTemplate() const{ return coverTemplate;}
  291. inline const fxStr& SendFaxJob::getCoverName() const { return name; }
  292. inline const fxStr& SendFaxJob::getCoverLocation() const{ return location; }
  293. inline const fxStr& SendFaxJob::getCoverCompany() const { return company; }
  294. inline const fxStr& SendFaxJob::getCoverRegarding() const{ return regarding; }
  295. inline const fxStr& SendFaxJob::getCoverComments() const{ return comments; }
  296. inline const fxStr& SendFaxJob::getCoverVoiceNumber() const{ return voicenumber; }
  297. inline const fxStr& SendFaxJob::getCoverFromLocation() const{ return fromlocation; }
  298. inline const fxStr& SendFaxJob::getCoverFromFax() const { return fromfax; }
  299. inline const fxStr& SendFaxJob::getCoverFromVoice() const{ return fromvoice; }
  300. inline const fxStr& SendFaxJob::getCoverFromCompany() const{ return fromcompany; }
  301. inline float SendFaxJob::getPageWidth() const { return pageWidth; }
  302. inline float SendFaxJob::getPageLength() const { return pageLength; }
  303. inline const fxStr& SendFaxJob::getPageSize() const { return pageSize; }
  304. inline float SendFaxJob::getVResolution() const { return vres; }
  305. inline float SendFaxJob::getHResolution() const { return hres; }
  306. inline int SendFaxJob::getMinSpeed() const { return minsp; }
  307. inline int SendFaxJob::getDesiredSpeed() const { return desiredbr; }
  308. inline int SendFaxJob::getDesiredMST() const { return desiredst; }
  309. inline int SendFaxJob::getDesiredEC() const { return desiredec; }
  310. inline bool SendFaxJob::getUseXVRes() const { return useXVRes; }
  311. inline int SendFaxJob::getDesiredDF() const { return desireddf; }
  312. inline const fxStr& SendFaxJob::getTagLineFormat() const{ return tagline; }
  313. inline u_int SendFaxJob::getChopHandling() const { return pagechop; }
  314. inline float SendFaxJob::getChopThreshold() const { return chopthreshold; }
  315. inline u_int SendFaxJob::getSkipPages() const { return skippages; }
  316. inline u_int SendFaxJob::getSkippedPages() const { return skippedpages; }
  317. inline u_int SendFaxJob::getNoCountCover() const { return nocountcover; }
  318. inline bool SendFaxJob::getServerDoCover() const { return serverdocover; }
  319. inline bool SendFaxJob::getIgnoreModemBusy() const { return ignoremodembusy; }
  320. #endif /* _SendFaxJob_ */