aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/matplotlib/py2/extern/ttconv/pprdrv.h
blob: 39e81fee7f0c89fe2db96b20561dc477455edfdf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/* -*- mode: c++; c-basic-offset: 4 -*- */

/*
 * Modified for use within matplotlib
 * 5 July 2007
 * Michael Droettboom
 */

/*
** ~ppr/src/include/pprdrv.h
** Copyright 1995, Trinity College Computing Center.
** Written by David Chappell.
**
** Permission to use, copy, modify, and distribute this software and its
** documentation for any purpose and without fee is hereby granted, provided
** that the above copyright notice appear in all copies and that both that
** copyright notice and this permission notice appear in supporting
** documentation.  This software is provided "as is" without express or
** implied warranty.
**
** This file last revised 5 December 1995.
*/

#include <vector>
#include <cassert>

/*
 * Encapsulates all of the output to write to an arbitrary output
 * function.  This both removes the hardcoding of output to go to stdout
 * and makes output thread-safe.  Michael Droettboom [06-07-07]
 */
class TTStreamWriter
{
 private:
    // Private copy and assignment
    TTStreamWriter& operator=(const TTStreamWriter& other);
    TTStreamWriter(const TTStreamWriter& other);

 public:
    TTStreamWriter() { }
    virtual ~TTStreamWriter() { }

    virtual void write(const char*) = 0;

    virtual void printf(const char* format, ...);
    virtual void put_char(int val);
    virtual void puts(const char* a);
    virtual void putline(const char* a);
};

class TTDictionaryCallback
{
private:
    // Private copy and assignment
    TTDictionaryCallback& operator=(const TTStreamWriter& other);
    TTDictionaryCallback(const TTStreamWriter& other);

public:
    TTDictionaryCallback() { }
    virtual ~TTDictionaryCallback() { }

    virtual void add_pair(const char* key, const char* value) = 0;
};

void replace_newlines_with_spaces(char* a);

/*
 * A simple class for all ttconv exceptions.
 */
class TTException
{
    const char* message;
    TTException& operator=(const TTStreamWriter& other);
    TTException(const TTStreamWriter& other);

public:
    TTException(const char* message_) : message(message_) { }
    const char* getMessage()
    {
        return message;
    }
};

/*
** No debug code will be included if this
** is not defined:
*/
/* #define DEBUG 1 */

/*
** Uncomment the defines for the debugging
** code you want to have included.
*/
#ifdef DEBUG
#define DEBUG_TRUETYPE          /* truetype fonts, conversion to Postscript */
#endif

/* Do not change anything below this line. */

enum font_type_enum
{
    PS_TYPE_3  = 3,
    PS_TYPE_42 = 42,
    PS_TYPE_42_3_HYBRID = 43,
    PDF_TYPE_3 = -3
};

/* routines in pprdrv_tt.c */
void insert_ttfont(const char *filename, TTStreamWriter& stream, font_type_enum target_type, std::vector<int>& glyph_ids);

void get_pdf_charprocs(const char *filename, std::vector<int>& glyph_ids, TTDictionaryCallback& dict);

/* end of file */