We are in need of a custom Windows "plotter" print driver to be used with our software.
The following functional specification is required:
1. Must install cleanly as part of our software installation. A single file .EXE installation will do as we can call that from our installation.
2. Must be able to be printed to from any windows program that can print by simply selecting the printer from the list of installed printers.
3. Must produce HPGL (not HPGL/2) output of the print job. Vector plotter commands include SP, SC, VS, IN, IP, PU, PD, PA, PR, AR, AA, FP,EP,PM. Must support (8) pen colors, and polygon fill using filltype and the HPGL fill buffer concept. Final Device is vector plotter, no bitmap stuff. True type fonts and other shapes should be output as outlines. Thick lines should be simulated by multiple lines, driver properties page should include ability for user to input pen width for each of the 8 pens.
4. Driver will only output to file with .LVF extension. No actual physical device interface.
5. Must be compatible with Windows 2000, XP and Vista.
6. Must include all components to install itself. No reliance on the user to have Windows CD's handy or whatever.
7. We will provide the desired name for the printer to be installed (user will not select at install time) as well as any verbiage we want on the screens when the user is printing.
8. Must be user-mode driver written in C/C++.
1. Both source and executable forms of all individual files required to install the print driver on all required supported platforms.
2. EXE format single-file installer package for distribution.
3. Source code must be thoroughly documented and complete instructions for Debugging/recompiling if needed must be provided.
This will be 'work made for hire', and we will own all right, title and interest in the final result. A statement of assignment, including indemnification for any claims of infringement on the basis of our reliance on the developer's expertise, will be required to be signed and faxed to us by the selected developer.
It is acceptable to utilize third-party tools and utilities as part of the overall solution, provided that:
1. The print-driver front-end is separate and distinct (in terms of files) from the tools/utilities it utilizes.
2. Any tools/utilities are used in such a way that they do not create any obligation for us to pay royalties or license fees when distributing, are able to be redistributed by us as part of the package without infringement and do not create an obligation for us to redistribute source code for the print-driver front-end. Any required license statements, source code for tools/utilities that must be provided, etc. must be integrated by the developer as part of the overall effort to build the installation package.
We will need e-mail only support for any bugs. The expectation is that, after the package is delivered, we will be able to get anything corrected which prevents the deliverables from meeting the specification for a period of one year without charge.
What we are looking for is a very simplified version of something like WinLine, to be used with our application only. The MSPLOT sample from the WDK should be a good starting point, but the driver must be usable in Vista as well as 2000/XP. MSPLOT generates HPGL/2, we need old fashioned HPGL without PE (polygon encoded) commands. MSPLOT fills shapes using a series of filled retangles, we can not use that, we must have polygon shapes (outlines) filled using the PM commands.
We need only a small sub-set of HPGL implemented:
PA - Position Absolute
PR - Position Relative
AA - Arc Absolute
AR - Arc Relative
PU - Pen Up
PD - Pen Down
CI - Circle
SP - Select Pen (16 colors)
EP - Edge Polygon
FP - Fill Polygon
PM - Polygon mode (PM0 = start of polygon set, PM1 = end of subpolygon, PM2 = end of polygon set)
FT - Fill Type
IN - Initialize
BP - Begin Plot (put "IN;BP" at start of all print jobs)
All commands end with ";" : example "BP;PA100,100;PD;PA200,200,-200,300,0,0;"
Would like user to select use of relative or absolute commands (driver property page). Output commands are always in plotter units. Plotter units are 32 bits over plotter area (user input on driver property page) which is always square and can vary between .5" square to 48" square.