~ubuntu-branches/ubuntu/vivid/grass/vivid-proposed

« back to all changes in this revision

Viewing changes to lib/psdriver/raster.c

  • Committer: Package Import Robot
  • Author(s): Bas Couwenberg
  • Date: 2015-02-20 23:12:08 UTC
  • mfrom: (8.2.6 experimental)
  • Revision ID: package-import@ubuntu.com-20150220231208-1u6qvqm84v430b10
Tags: 7.0.0-1~exp1
* New upstream release.
* Update python-ctypes-ternary.patch to use if/else instead of and/or.
* Drop check4dev patch, rely on upstream check.
* Add build dependency on libpq-dev to grass-dev for libpq-fe.h.
* Drop patches applied upstream, refresh remaining patches.
* Update symlinks for images switched from jpg to png.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#include <string.h>
 
3
 
 
4
#include "psdriver.h"
 
5
 
 
6
static int masked;
 
7
 
 
8
void PS_begin_raster(int mask, int src[2][2], double dst[2][2])
 
9
{
 
10
    const char *type = ps.true_color ? (mask ? "RASTERRGBMASK" : "RASTERRGB")
 
11
        : (mask ? "RASTERGRAYMASK" : "RASTERGRAY");
 
12
 
 
13
    int ssx = src[0][1] - src[0][0];
 
14
    int ssy = src[1][1] - src[1][0];
 
15
    int sox = src[0][0];
 
16
    int soy = src[1][0];
 
17
 
 
18
    double dsx = dst[0][1] - dst[0][0];
 
19
    double dsy = dst[1][1] - dst[1][0];
 
20
    double dox = dst[0][0];
 
21
    double doy = dst[1][0];
 
22
 
 
23
    masked = mask;
 
24
 
 
25
    output("gsave\n");
 
26
    output("%f %f translate %f %f scale\n", dox, doy, dsx, dsy);
 
27
    output("%d %d [%d 0 0 %d %d %d] %s\n", ssx, ssy, ssx, ssy, sox, soy,
 
28
           type);
 
29
}
 
30
 
 
31
int PS_raster(int n, int row,
 
32
              const unsigned char *red, const unsigned char *grn,
 
33
              const unsigned char *blu, const unsigned char *nul)
 
34
{
 
35
    int i;
 
36
 
 
37
    for (i = 0; i < n; i++) {
 
38
        if (ps.true_color) {
 
39
            if (masked)
 
40
                output("%02X%02X%02X%02X", (nul && nul[i]) ? 0xFF : 0x00,
 
41
                       red[i], grn[i], blu[i]);
 
42
            else
 
43
                output("%02X%02X%02X", red[i], grn[i], blu[i]);
 
44
        }
 
45
        else {
 
46
            unsigned int gray =
 
47
                (unsigned int)(red[i] * 0.299 + grn[i] * 0.587 +
 
48
                               blu[i] * 0.114);
 
49
 
 
50
            if (masked)
 
51
                output("%02X%02X", (nul && nul[i]) ? 0xFF : 0x00, gray);
 
52
            else
 
53
                output("%02X", gray);
 
54
        }
 
55
    }
 
56
 
 
57
    output("\n");
 
58
 
 
59
    return row + 1;
 
60
}
 
61
 
 
62
void PS_end_raster(void)
 
63
{
 
64
    output("grestore\n");
 
65
}