Home | History | Annotate | Download | only in rendering

Lines Matching refs:info

266 static inline void startTextChunk(SVGTextChunkLayoutInfo& info)
268 info.chunk.boxes.clear();
269 info.chunk.boxes.append(SVGInlineBoxCharacterRange());
271 info.chunk.start = info.it;
272 info.assignChunkProperties = true;
275 static inline void closeTextChunk(SVGTextChunkLayoutInfo& info)
277 ASSERT(!info.chunk.boxes.last().isOpen());
278 ASSERT(info.chunk.boxes.last().isClosed());
280 info.chunk.end = info.it;
281 ASSERT(info.chunk.end >= info.chunk.start);
283 info.svgTextChunks.append(info.chunk);
591 SVGTextDecorationInfo info;
616 info = m_rootBox->retrievePaintServersForTextDecoration(text);
620 textBox->paintDecoration(UNDERLINE, m_paintInfo.context, decorationOrigin.x(), decorationOrigin.y(), textWidth, *it, info);
623 textBox->paintDecoration(OVERLINE, m_paintInfo.context, decorationOrigin.x(), decorationOrigin.y(), textWidth, *it, info);
631 textBox->paintDecoration(LINE_THROUGH, m_paintInfo.context, decorationOrigin.x(), decorationOrigin.y(), textWidth, *it, info);
965 SVGCharacterLayoutInfo info(m_svgChars);
966 buildLayoutInformation(this, info);
987 void SVGRootInlineBox::buildLayoutInformation(InlineFlowBox* start, SVGCharacterLayoutInfo& info)
996 info.addLayoutInformation(positioningElement);
1003 buildLayoutInformationForTextBox(info, static_cast<InlineTextBox*>(curr), lastGlyph);
1019 info.addLayoutInformation(positioningElement);
1021 info.setInPathLayout(true);
1054 info.pathExtraAdvance += calculateTextLengthCorrectionForTextChunk(chunk, lengthAdjust, computedLength);
1057 info.pathTextLength += computedLength;
1058 info.pathChunkLength += chunk.textLength;
1068 info.addLayoutInformation(flowBox, textAnchorStartOffset);
1071 float shiftxSaved = info.shiftx;
1072 float shiftySaved = info.shifty;
1074 buildLayoutInformation(flowBox, info);
1075 info.processedChunk(shiftxSaved, shiftySaved);
1078 info.setInPathLayout(false);
1195 void SVGRootInlineBox::buildLayoutInformationForTextBox(SVGCharacterLayoutInfo& info, InlineTextBox* textBox, LastGlyphInfo& lastGlyph)
1215 if (info.inPathLayout())
1238 if (info.xValueAvailable() && (!info.inPathLayout() || (info.inPathLayout() && !isVerticalText))) {
1244 info.curx = info.xValueNext();
1247 if (info.yValueAvailable() && (!info.inPathLayout() || (info.inPathLayout() && isVerticalText))) {
1253 info.cury = info.yValueNext();
1260 if (info.dxValueAvailable()) {
1263 dx = info.dxValueNext();
1264 info.dx += dx;
1266 if (!info.inPathLayout())
1267 info.curx += dx;
1271 if (info.dyValueAvailable()) {
1274 dy = info.dyValueNext();
1275 info.dy += dy;
1277 if (!info.inPathLayout())
1278 info.cury += dy;
1295 if (info.nextDrawnSeperated || spacing != 0.0f) {
1296 info.nextDrawnSeperated = false;
1303 if (spacing != 0.0f && !info.inPathLayout())
1304 info.nextDrawnSeperated = true;
1315 if (info.inPathLayout()) {
1320 newOffset = info.curx;
1322 newOffset = info.cury;
1327 if (info.pathTextLength > 0.0f && info.pathChunkLength > 0.0f) {
1329 svgChar.pathData->yScale = info.pathChunkLength / info.pathTextLength;
1333 svgChar.pathData->xScale = info.pathChunkLength / info.pathTextLength;
1340 float pathExtraAdvance = info.pathExtraAdvance;
1341 info.pathExtraAdvance += spacing;
1343 svgChar.pathData->hidden = !info.nextPathLayoutPointAndAngle(correctedGlyphAdvance, extraAdvance, newOffset);
1346 info.pathExtraAdvance = pathExtraAdvance;
1350 if (info.angleValueAvailable())
1351 info.angle = info.angleValueNext();
1354 if (info.baselineShiftValueAvailable()) {
1356 float shift = info.baselineShiftValueNext();
1359 info.shiftx += shift;
1361 info.shifty -= shift;
1367 svgChar.x = info.curx;
1368 svgChar.y = info.cury;
1369 svgChar.angle = info.angle;
1372 if (!info.inPathLayout()) {
1373 svgChar.x += info.shiftx + xOrientationShift;
1374 svgChar.y += info.shifty + yOrientationShift;
1387 svgChar.pathData->xShift = info.shiftx + xOrientationShift;
1388 svgChar.pathData->yShift = info.shifty + yOrientationShift;
1392 svgChar.pathData->xShift += info.dx;
1396 svgChar.pathData->yShift += info.dy;
1425 info.cury += glyphAdvance + spacing;
1427 info.curx += glyphAdvance + spacing - (float)kerning;
1431 info.svgChars.append(svgChar);
1432 info.processedSingleCharacter();
1441 SVGTextChunkLayoutInfo info(svgTextChunks);
1442 info.it = svgChars.begin();
1443 info.chunk.start = svgChars.begin();
1444 info.chunk.end = svgChars.begin();
1446 buildTextChunks(svgChars, start, info);
1447 ASSERT(info.it == svgChars.end());
1450 void SVGRootInlineBox::buildTextChunks(Vector<SVGChar>& svgChars, InlineFlowBox* start, SVGTextChunkLayoutInfo& info)
1466 textBox, length, textBox->start(), textBox->end(), (int) info.handlingTextPath);
1484 bool isFirstCharacter = info.svgTextChunks.isEmpty() && info.chunk.start == info.it && info.chunk.start == info.chunk.end;
1486 ASSERT(info.chunk.boxes.isEmpty());
1487 info.chunk.boxes.append(SVGInlineBoxCharacterRange());
1489 ASSERT(!info.chunk.boxes.isEmpty());
1493 ASSERT(info.it != svgChars.end());
1495 SVGInlineBoxCharacterRange& range = info.chunk.boxes.last();
1506 if (info.assignChunkProperties) {
1507 info.assignChunkProperties = false;
1509 info.chunk.isVerticalText = isVerticalWritingMode(text->style()->svgStyle());
1510 info.chunk.isTextPath = info.handlingTextPath;
1511 info.chunk.anchor = text->style()->svgStyle()->textAnchor();
1512 info.chunk.textLength = textContent->textLength().value(textContent);
1513 info.chunk.lengthAdjust = (ELengthAdjust) textContent->lengthAdjust();
1516 fprintf(stderr, " | -> Assign chunk properties, isVerticalText=%i, anchor=%i\n", info.chunk.isVerticalText, info.chunk.anchor);
1520 if (i > 0 && !isFirstCharacter && (*info.it).newTextChunk) {
1526 closeTextChunk(info);
1533 startTextChunk(info);
1539 startTextChunk(info);
1540 SVGInlineBoxCharacterRange& range = info.chunk.boxes.last();
1542 info.assignChunkProperties = false;
1543 info.chunk.isVerticalText = isVerticalWritingMode(text->style()->svgStyle());
1544 info.chunk.isTextPath = info.handlingTextPath;
1545 info.chunk.anchor = text->style()->svgStyle()->textAnchor();
1546 info.chunk.textLength = textContent->textLength().value(textContent);
1547 info.chunk.lengthAdjust = (ELengthAdjust) textContent->lengthAdjust();
1561 ++info.it;
1568 SVGInlineBoxCharacterRange& range = info.chunk.boxes.last();
1577 if (info.it != svgChars.end()) {
1584 if ((*info.it).newTextChunk) {
1589 closeTextChunk(info);
1590 startTextChunk(info);
1593 info.chunk.boxes.append(SVGInlineBoxCharacterRange());
1605 closeTextChunk(info);
1622 info.handlingTextPath = true;
1624 buildTextChunks(svgChars, flowBox, info);
1627 info.handlingTextPath = false;
1677 static inline void addPaintServerToTextDecorationInfo(ETextDecoration decoration, SVGTextDecorationInfo& info, RenderObject* object)
1680 info.fillServerMap.set(decoration, object);
1683 info.strokeServerMap.set(decoration, object);
1702 SVGTextDecorationInfo info;
1714 addPaintServerToTextDecorationInfo(OVERLINE, info, object);
1717 addPaintServerToTextDecorationInfo(UNDERLINE, info, object);
1720 addPaintServerToTextDecorationInfo(LINE_THROUGH, info, object);
1724 return info;