Hi Jeremias,

I’d have a couple of comments regarding your changes. I’ve only had 
a quick look and don’t understand this part of the code well, but 
following the principle of pair review, here they are:

- at several places there is code like the following:
    private void checkInTextObject() {
        if (!inTextObject) {
            throw new IllegalStateException("Not in text object");
        }
    }
  I understand and don’t criticise the need for safety checks, 
  especially if the code is new or complex. Only, since we now have 
  Java 1.4 as a minimal requirement, why not use assert statements? They 
  were created exactly for that.

- in PDFTextUtil:
  - the setTextRenderingMode(int) method is only used within 
    PDFTextUtil; why then not making it private? The other 
    setTextRenderingMode method will still be available and seems to be 
    much safer to use anyway.
  - it seems to me that a bit more of the internal state of 
    a PDFTextUtil object could be controlled by the object itself, 
    especially in the following piece of code (PDFTextPainter, l.220):
        Font f = textUtil.selectFontForChar(ch);
        if (f != textUtil.getCurrentFont()) {
            textUtil.writeTJ();
            textUtil.setCurrentFont(f);
            textUtil.writeTf(f);
            textUtil.writeTextMatrix(localTransform);
        }
    A signalFontUsed(f) method might make sense. Basically doing the 
    same test as above, but inside PDFTextUtil. The code would be better 
    encapsulated, so more maintainable. WDYT?

- in PDFTextPainter: now that the code is working, you probably want to 
  remove the DEBUG variable and all the statements displaying stuff to 
  System.out; or replace them with proper log.debug statements ;-)

For the rest I believe when you say it’s working... Congrats!

Vincent

Reply via email to