summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/pdfinput/pdf-parser.cpp
diff options
context:
space:
mode:
authormiklosh <miklosh@users.sourceforge.net>2007-07-28 13:49:57 +0000
committermiklosh <miklosh@users.sourceforge.net>2007-07-28 13:49:57 +0000
commita8b5523b1d23b699fb87936ed5b0d7b300869e6d (patch)
tree0e0c3ce456e160d9c7764ee73112d544ae2549b2 /src/extension/internal/pdfinput/pdf-parser.cpp
parentGtkmm-ified the desktop window object, and modified the file dialogs so that ... (diff)
downloadinkscape-a8b5523b1d23b699fb87936ed5b0d7b300869e6d.tar.gz
inkscape-a8b5523b1d23b699fb87936ed5b0d7b300869e6d.zip
Reworked text state handling so that now SvgBuilder keeps track of the current text position
(bzr r3329)
Diffstat (limited to 'src/extension/internal/pdfinput/pdf-parser.cpp')
-rw-r--r--src/extension/internal/pdfinput/pdf-parser.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
index 8d23b0bb3..a75f468d5 100644
--- a/src/extension/internal/pdfinput/pdf-parser.cpp
+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
@@ -1962,6 +1962,7 @@ void PdfParser::opEOClip(Object args[], int numArgs) {
void PdfParser::opBeginText(Object args[], int numArgs) {
state->setTextMat(1, 0, 0, 1, 0, 0);
state->textMoveTo(0, 0);
+ builder->updateTextPosition(0.0, 0.0);
fontChanged = gTrue;
builder->beginTextObject(state);
}
@@ -2029,6 +2030,7 @@ void PdfParser::opTextMove(Object args[], int numArgs) {
tx = state->getLineX() + args[0].getNum();
ty = state->getLineY() + args[1].getNum();
state->textMoveTo(tx, ty);
+ builder->updateTextPosition(tx, ty);
}
void PdfParser::opTextMoveSet(Object args[], int numArgs) {
@@ -2039,6 +2041,7 @@ void PdfParser::opTextMoveSet(Object args[], int numArgs) {
state->setLeading(-ty);
ty += state->getLineY();
state->textMoveTo(tx, ty);
+ builder->updateTextPosition(tx, ty);
}
void PdfParser::opSetTextMatrix(Object args[], int numArgs) {
@@ -2047,6 +2050,7 @@ void PdfParser::opSetTextMatrix(Object args[], int numArgs) {
args[4].getNum(), args[5].getNum());
state->textMoveTo(0, 0);
builder->updateTextMatrix(state);
+ builder->updateTextPosition(0.0, 0.0);
fontChanged = gTrue;
}
@@ -2056,6 +2060,7 @@ void PdfParser::opTextNextLine(Object args[], int numArgs) {
tx = state->getLineX();
ty = state->getLineY() - state->getLeading();
state->textMoveTo(tx, ty);
+ builder->updateTextPosition(tx, ty);
}
//------------------------------------------------------------------------
@@ -2088,6 +2093,7 @@ void PdfParser::opMoveShowText(Object args[], int numArgs) {
tx = state->getLineX();
ty = state->getLineY() - state->getLeading();
state->textMoveTo(tx, ty);
+ builder->updateTextPosition(tx, ty);
doShowText(args[0].getString());
}
@@ -2107,6 +2113,7 @@ void PdfParser::opMoveSetShowText(Object args[], int numArgs) {
tx = state->getLineX();
ty = state->getLineY() - state->getLeading();
state->textMoveTo(tx, ty);
+ builder->updateTextPosition(tx, ty);
doShowText(args[2].getString());
}
@@ -2138,6 +2145,7 @@ void PdfParser::opShowSpaceText(Object args[], int numArgs) {
state->textShift(-obj.getNum() * 0.001 *
fabs(state->getFontSize()), 0);
}
+ builder->updateTextShift(state, obj.getNum());
} else if (obj.isString()) {
doShowText(obj.getString());
} else {
@@ -2271,7 +2279,7 @@ void PdfParser::doShowText(GooString *s) {
originY *= state->getFontSize();
state->textTransformDelta(originX, originY, &tOriginX, &tOriginY);
builder->addChar(state, state->getCurX() + riseX, state->getCurY() + riseY,
- tdx, tdy, tOriginX, tOriginY, code, n, u, uLen);
+ dx, dy, tOriginX, tOriginY, code, n, u, uLen);
state->shift(tdx, tdy);
p += n;
len -= n;