1 //========================================================================
2 //
3 // This file is under the GPLv2 or later license
4 //
5 // Copyright (C) 2005-2006 Kristian Høgsberg <krh@redhat.com>
6 // Copyright (C) 2005 Albert Astals Cid <aacid@kde.org>
7 //
8 // To see a description of the changes please see the Changelog file that
9 // came with your tarball or type make ChangeLog if you are building from git
10 //
11 //========================================================================
12 
13 #include <limits.h>
14 #include <stdlib.h>
15 #include <stdio.h>
16 #include <ctype.h>
17 #include <assert.h>
18 
19 #include "goo/gtypes.h"
20 #include "goo/GooList.h"
21 #include "goo/GooString.h"
22 #include "Object.h"
23 
24 class PageLabelInfo {
25 public:
26   PageLabelInfo(Object *tree, int numPages);
27   ~PageLabelInfo();
28   GBool labelToIndex(GooString *label, int *index);
29   GBool indexToLabel(int index, GooString *label);
30 
31 private:
32   void parse(Object *tree);
33 
34 private:
35   struct Interval {
36     Interval(Object *dict, int baseA);
37     ~Interval();
38     GooString *prefix;
39     enum NumberStyle {
40       None,
41       Arabic,
42       LowercaseRoman,
43       UppercaseRoman,
44       UppercaseLatin,
45       LowercaseLatin
46     } style;
47     int first, base, length;
48   };
49 
50   GooList intervals;
51 };
52