~ubuntu-branches/ubuntu/dapper/poppler/dapper-security

« back to all changes in this revision

Viewing changes to poppler/PageLabelInfo.cc

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2006-03-06 18:42:44 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20060306184244-oomqyiqr7cgncp2c
Tags: 0.5.1-0ubuntu1
* New upstream version:
  - Support for embedded files.
  - Handle 0-width lines correctly.
  - Avoid external file use when opening fonts.
  - Only use vector fonts returned from fontconfig (#5758).
  - Fix scaled 1x1 pixmaps use for drawing lines (#3387).
  - drawSoftMaskedImage support in cairo backend.
  - Misc bug fixes: #5922, #5946, #5749, #5952, #4030, #5420.
* debian/control.in, debian/libpoppler0c2.dirs, 
  debian/libpoppler0c2-glib.dirs, debian/libpoppler0c2-glib.install,
  debian/libpoppler0c2.install, debian/libpoppler0c2-qt.dirs,
  debian/libpoppler0c2-qt.install, debian/rules:
  - updated for the soname change
* debian/patches/000_splash_build_fix.patch:
  - fix build when using splash
* debian/patches/001_fixes_for_fonts_selection.patch:
  - fix with the new version

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
#include <stdlib.h>
3
3
#include <stdio.h>
4
4
#include <assert.h>
 
5
#include "UGooString.h"
5
6
 
6
7
#include "PageLabelInfo.h"
7
8
 
157
158
  obj.free();
158
159
 
159
160
  if (dict->dictLookup("P", &obj)->isString())
160
 
    prefix = copyString(obj.getString()->getCString());
 
161
    prefix = obj.getString()->copy();
161
162
  else
162
 
    prefix = copyString("");
 
163
    prefix = new GooString("");
163
164
  obj.free();
164
165
 
165
166
  if (dict->dictLookup("St", &obj)->isInt())
172
173
}
173
174
 
174
175
PageLabelInfo::Interval::~Interval() {
175
 
  gfree(prefix);
 
176
  delete prefix;
176
177
}
177
178
 
178
179
PageLabelInfo::PageLabelInfo(Object *tree, int numPages) {
247
248
  base = 0;
248
249
  for (i = 0; i < intervals.getLength(); i++) {
249
250
    interval = (Interval *) intervals.get(i);
250
 
    prefixLength = strlen(interval->prefix);
251
 
    if (strncmp(str, interval->prefix, prefixLength) != 0)
 
251
    prefixLength = interval->prefix->getLength();
 
252
    if (label->cmpN(interval->prefix, prefixLength) != 0)
252
253
      continue;
253
254
 
254
255
    switch (interval->style) {
290
291
  char buffer[32];
291
292
  int i, base, number;
292
293
  Interval *interval;
 
294
  GooString number_string;
293
295
 
294
296
  base = 0;
295
 
  label->clear();
296
297
  interval = NULL;
297
298
  for (i = 0; i < intervals.getLength(); i++) {
298
299
    interval = (Interval *) intervals.get(i);
304
305
  if (i == intervals.getLength())
305
306
    return gFalse;
306
307
 
307
 
  label->append(interval->prefix);
308
 
 
309
308
  number = index - base + interval->first;
310
309
  switch (interval->style) {
311
310
  case Interval::Arabic:
312
311
    snprintf (buffer, sizeof(buffer), "%d", number);
313
 
    label->append(buffer);
 
312
    number_string.append(buffer);
314
313
    break;
315
314
  case Interval::LowercaseRoman:
316
 
    toRoman(number, label, gFalse);
 
315
    toRoman(number, &number_string, gFalse);
317
316
    break;
318
317
  case Interval::UppercaseRoman:
319
 
    toRoman(number, label, gTrue);
 
318
    toRoman(number, &number_string, gTrue);
320
319
    break;
321
320
  case Interval::UppercaseLatin:
322
321
  case Interval::LowercaseLatin:
326
325
    break;
327
326
  }
328
327
 
 
328
  label->clear();
 
329
  label->append(interval->prefix);
 
330
  if (label->hasUnicodeMarker()) {
 
331
      int i, len;
 
332
      char ucs2_char[2];
 
333
 
 
334
      /* Convert the ascii number string to ucs2 and append. */
 
335
      len = number_string.getLength ();
 
336
      ucs2_char[0] = 0;
 
337
      for (i = 0; i < len; ++i) {
 
338
          ucs2_char[1] = number_string.getChar(i);
 
339
          label->append(ucs2_char, 2);
 
340
      }
 
341
      ucs2_char[1] = 0;
 
342
      label->append(ucs2_char, 2);
 
343
  } else {
 
344
      label->append(&number_string);
 
345
  }
 
346
 
329
347
  return gTrue;
330
348
}
331
349