* dimensions that are <= 0...
*/
- if ((pwg_media = pwgMediaForSize(PWG_FROM_POINTS(ppd_size->width),
- PWG_FROM_POINTS(ppd_size->length))) == NULL)
+ if ((pwg_media = _pwgMediaNearSize(PWG_FROM_POINTS(ppd_size->width),
+ PWG_FROM_POINTS(ppd_size->length),
+ 0)) == NULL)
continue;
new_width = pwg_media->width;
pwg_media_t * /* O - PWG media name */
pwgMediaForSize(int width, /* I - Width in hundredths of millimeters */
int length) /* I - Length in hundredths of millimeters */
+{
+ /*
+ * Adobe uses a size matching algorithm with an epsilon of 5 points, which
+ * is just about 176/2540ths...
+ */
+ return _pwgMediaNearSize(width, length, 176);
+}
+
+pwg_media_t * /* O - PWG media name */
+_pwgMediaNearSize(int width, /* I - Width in hundredths of millimeters */
+ int length, /* I - Length in hundredths of millimeters */
+ int epsilon) /* I - Match within this tolernace. PWG units */
{
int i; /* Looping var */
pwg_media_t *media, /* Current media */
i > 0;
i --, media ++)
{
- /*
- * Adobe uses a size matching algorithm with an epsilon of 5 points, which
- * is just about 176/2540ths...
- */
dw = abs(media->width - width);
dl = abs(media->length - length);
if (!dw && !dl)
return (media);
- else if (dw < 176 && dl < 176)
+ else if (dw <= epsilon && dl <= epsilon)
{
if (dw <= best_dw && dl <= best_dl)
{
extern pwg_media_t *_pwgMediaForSize(int width, int length)
_CUPS_INTERNAL_MSG("Use pwgMediaForSize instead.");
extern const pwg_media_t *_pwgMediaTable(size_t *num_media);
+extern pwg_media_t *_pwgMediaNearSize(int width, int length, int epsilon);
# ifdef __cplusplus
}