forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			86 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 | 
						|
/* ex: set tabstop=8 softtabstop=4 shiftwidth=4 expandtab: */
 | 
						|
/* This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | 
						|
 | 
						|
#ifndef nsCUPSShim_h___
 | 
						|
#define nsCUPSShim_h___
 | 
						|
 | 
						|
 | 
						|
/* Various CUPS data types. We don't #include cups headers to avoid
 | 
						|
 * requiring CUPS to be installed on the build host (and to avoid having
 | 
						|
 * to test for CUPS in configure).
 | 
						|
 */
 | 
						|
typedef struct                          /**** Printer Options ****/
 | 
						|
{
 | 
						|
    char          *name;                  /* Name of option */
 | 
						|
    char          *value;                 /* Value of option */
 | 
						|
} cups_option_t;
 | 
						|
 | 
						|
typedef struct               /**** Destination ****/
 | 
						|
{
 | 
						|
    char          *name,       /* Printer or class name */
 | 
						|
                  *instance;   /* Local instance name or nullptr */
 | 
						|
    int           is_default;  /* Is this printer the default? */
 | 
						|
    int           num_options; /* Number of options */
 | 
						|
    cups_option_t *options;    /* Options */
 | 
						|
} cups_dest_t;
 | 
						|
 | 
						|
typedef cups_dest_t* (*CupsGetDestType)(const char *printer,
 | 
						|
                                        const char *instance,
 | 
						|
                                        int num_dests,
 | 
						|
                                        cups_dest_t *dests);
 | 
						|
typedef int (*CupsGetDestsType)(cups_dest_t **dests);
 | 
						|
typedef int (*CupsFreeDestsType)(int         num_dests,
 | 
						|
                                 cups_dest_t *dests);
 | 
						|
typedef int (*CupsPrintFileType)(const char    *printer,
 | 
						|
                                 const char    *filename,
 | 
						|
                                 const char    *title,
 | 
						|
                                 int           num_options,
 | 
						|
                                 cups_option_t *options);
 | 
						|
typedef int (*CupsTempFdType)(char *filename,
 | 
						|
                              int   length);
 | 
						|
typedef int (*CupsAddOptionType)(const char    *name,
 | 
						|
                                 const char    *value,
 | 
						|
                                 int           num_options,
 | 
						|
                                 cups_option_t **options);
 | 
						|
 | 
						|
struct PRLibrary;
 | 
						|
 | 
						|
/* Note: this class relies on static initialization. */
 | 
						|
class nsCUPSShim {
 | 
						|
    public:
 | 
						|
        /**
 | 
						|
         * Initialize this object. Attempt to load the CUPS shared
 | 
						|
         * library and find function pointers for the supported
 | 
						|
         * functions (see below).
 | 
						|
         * @return false if the shared library could not be loaded, or if
 | 
						|
         *                  any of the functions could not be found.
 | 
						|
         *         true  for successful initialization.
 | 
						|
         */
 | 
						|
        bool Init();
 | 
						|
 | 
						|
        /**
 | 
						|
         * @return true  if the object was initialized successfully.
 | 
						|
         *         false otherwise.
 | 
						|
         */
 | 
						|
        bool IsInitialized() { return nullptr != mCupsLib; }
 | 
						|
 | 
						|
        /* Function pointers for supported functions. These are only
 | 
						|
         * valid after successful initialization.
 | 
						|
         */
 | 
						|
        CupsAddOptionType   mCupsAddOption;
 | 
						|
        CupsFreeDestsType   mCupsFreeDests;
 | 
						|
        CupsGetDestType     mCupsGetDest;
 | 
						|
        CupsGetDestsType    mCupsGetDests;
 | 
						|
        CupsPrintFileType   mCupsPrintFile;
 | 
						|
        CupsTempFdType      mCupsTempFd;
 | 
						|
 | 
						|
    private:
 | 
						|
        PRLibrary *mCupsLib;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#endif /* nsCUPSShim_h___ */
 |