本文整理汇总了C++中KoShapeLoadingContext类的典型用法代码示例。如果您正苦于以下问题:C++ KoShapeLoadingContext类的具体用法?C++ KoShapeLoadingContext怎么用?C++ KoShapeLoadingContext使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了KoShapeLoadingContext类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadOdf
bool KoTextOnShapeContainer::loadOdf(const KoXmlElement &element, KoShapeLoadingContext &context)
{
Q_D(KoTextOnShapeContainer);
if (d->textShape == 0)
return false; // probably because the factory was not found.
KoTextShapeDataBase *shapeData = qobject_cast<KoTextShapeDataBase*>(d->textShape->userData());
Q_ASSERT(shapeData); // would be a bug in kotext
QString styleName = element.attributeNS(KoXmlNS::draw, "style-name");
if (!styleName.isEmpty()) {
KoStyleStack &styleStack = context.odfLoadingContext().styleStack();
styleStack.save();
context.odfLoadingContext().fillStyleStack(element, KoXmlNS::draw, "style-name", "graphic");
styleStack.setTypeProperties("graphic");
QString valign = styleStack.property(KoXmlNS::draw, "textarea-vertical-align");
if (valign == "top") {
shapeData->setVerticalAlignment(Qt::AlignTop);
} else if (valign == "middle") {
shapeData->setVerticalAlignment(Qt::AlignVCenter);
} else if (valign == "bottom") {
shapeData->setVerticalAlignment(Qt::AlignBottom);
}
styleStack.restore();
}
return shapeData->loadOdf(element, context);
}
示例2: loadOdfFrameElement
bool KoFormulaShape::loadOdfFrameElement(const KoXmlElement &element,
KoShapeLoadingContext &context)
{
// If this formula is embedded and not inline, then load the embedded document.
if ( element.tagName() == "object" && element.hasAttributeNS( KoXmlNS::xlink, "href" )) {
m_isInline = false;
// This calls loadOdfEmbedded().
return loadEmbeddedDocument( context.odfLoadingContext().store(),
element,
context.odfLoadingContext() );
}
// It's not a frame:object, so it must be inline.
const KoXmlElement& topLevelElement = KoXml::namedItemNS(element, KoXmlNS::math, "math");
if (topLevelElement.isNull()) {
kWarning() << "no math element as first child";
return false;
}
// Create a new root element, load the formula and replace the old one.
FormulaElement* formulaElement = new FormulaElement();
formulaElement->readMathML( topLevelElement );
delete m_formulaData->formulaElement();
m_formulaData->setFormulaElement(formulaElement);
m_formulaData->notifyDataChange(0, false);
m_isInline = true;
return true;
}
示例3: loadOdf
bool Surface::loadOdf( const KoXmlElement &surfaceElement, KoShapeLoadingContext &context )
{
KoStyleStack &styleStack = context.odfLoadingContext().styleStack();
styleStack.save();
if ( surfaceElement.hasAttributeNS( KoXmlNS::chart, "style-name" ) )
{
KDChart::BackgroundAttributes backgroundAttributes = d->kdPlane->backgroundAttributes();
KDChart::FrameAttributes frameAttributes = d->kdPlane->frameAttributes();
styleStack.clear();
context.odfLoadingContext().fillStyleStack( surfaceElement, KoXmlNS::chart, "style-name", "chart" );
styleStack.setTypeProperties( "graphic" );
if ( styleStack.hasProperty( KoXmlNS::draw, "stroke" ) )
{
frameAttributes.setVisible( true );
QString stroke = styleStack.property( KoXmlNS::draw, "stroke" );
if( stroke == "solid" || stroke == "dash" )
{
QPen pen = KoOdfGraphicStyles::loadOdfStrokeStyle( styleStack, stroke, context.odfLoadingContext().stylesReader() );
frameAttributes.setPen( pen );
}
}
if ( styleStack.hasProperty( KoXmlNS::draw, "fill" ) )
{
backgroundAttributes.setVisible( true );
QBrush brush;
QString fill = styleStack.property( KoXmlNS::draw, "fill" );
if ( fill == "solid" || fill == "hatch" )
brush = KoOdfGraphicStyles::loadOdfFillStyle( styleStack, fill, context.odfLoadingContext().stylesReader() );
else if ( fill == "gradient" )
{
brush = KoOdfGraphicStyles::loadOdfGradientStyle( styleStack, context.odfLoadingContext().stylesReader(), QSizeF( 5.0, 60.0 ) );
}
else if ( fill == "bitmap" )
brush = KoOdfGraphicStyles::loadOdfPatternStyle( styleStack, context.odfLoadingContext(), QSizeF( 5.0, 60.0 ) );
backgroundAttributes.setBrush( brush );
}
d->kdPlane->setBackgroundAttributes( backgroundAttributes );
d->kdPlane->setFrameAttributes( frameAttributes );
}
styleStack.restore();
return true;
}
示例4: loadStyle
void KoTosContainer::loadStyle(const KoXmlElement &element, KoShapeLoadingContext &context)
{
Q_D(KoTosContainer);
KoShapeContainer::loadStyle(element, context);
KoStyleStack &styleStack = context.odfLoadingContext().styleStack();
styleStack.setTypeProperties("graphic");
QString verticalAlign(styleStack.property(KoXmlNS::draw, "textarea-vertical-align"));
Qt::Alignment vAlignment(Qt::AlignTop);
if (verticalAlign == "bottom") {
vAlignment = Qt::AlignBottom;
} else if (verticalAlign == "justify") {
// not yet supported
vAlignment = Qt::AlignVCenter;
} else if (verticalAlign == "middle") {
vAlignment = Qt::AlignVCenter;
}
QString horizontalAlign(styleStack.property(KoXmlNS::draw, "textarea-horizontal-align"));
Qt::Alignment hAlignment(Qt::AlignLeft);
if (horizontalAlign == "center") {
hAlignment = Qt::AlignCenter;
} else if (horizontalAlign == "justify") {
// not yet supported
hAlignment = Qt::AlignCenter;
} else if (horizontalAlign == "right") {
hAlignment = Qt::AlignRight;
}
d->alignment = vAlignment | hAlignment;
}
示例5: loadText
bool KoTosContainer::loadText(const KoXmlElement &element, KoShapeLoadingContext &context)
{
Q_D(const KoTosContainer);
KoXmlElement child;
forEachElement(child, element) {
// only recreate the text shape if there's something to be loaded
if (child.localName() == "p" || child.localName() == "list") {
KoShape *textShape = createTextShape(context.documentResourceManager());
if (!textShape) {
return false;
}
//apply the style properties to the loaded text
setTextAlignment(d->alignment);
// In the case of text on shape, we cannot ask the text shape to load
// the odf, since it expects a complete document with style info and
// everything, so we have to use the KoTextShapeData object instead.
KoTextShapeDataBase *shapeData = qobject_cast<KoTextShapeDataBase*>(textShape->userData());
Q_ASSERT(shapeData);
shapeData->loadStyle(element, context);
bool loadOdf = shapeData->loadOdf(element, context);
return loadOdf;
}
}
return true;
}
示例6: supports
bool VectorShapeFactory::supports(const KoXmlElement & e, KoShapeLoadingContext &context) const
{
if (e.localName() == "image" && e.namespaceURI() == KoXmlNS::draw) {
QString href = e.attribute("href");
if (!href.isEmpty()) {
// check the mimetype
if (href.startsWith(QLatin1String("./"))) {
href.remove(0, 2);
}
// LO 3.5 does not write a mimetype for embedded wmf files, so guess also from content
const QString mimetype = context.odfLoadingContext().mimeTypeForPath(href, true);
return
mimetype == QLatin1String("image/x-svm") ||
mimetype == QLatin1String("image/x-emf") ||
mimetype == QLatin1String("image/x-wmf") ||
// Note: the Vector Shape supports SVG, but _NOT_ in this method, otherwise it will stomp all over loading the artistic text shape's svg
//mimetype == QLatin1String("image/svg+xml") ||
// next three for backward compatibility with Calligra
mimetype == QLatin1String("application/x-svm") ||
mimetype == QLatin1String("application/x-emf") ||
mimetype == QLatin1String("application/x-wmf") ||
// seems like MSO does not always write a mimetype
// see jeffcoweb.jeffco.k12.co.us%2Fhigh%2Fchatfield%2Fdepartments%2Fbusiness%2Fbanking_finance%2Funit_Plan_Budget.odp
mimetype.isEmpty() ||
// next for compatibility with OO/LO and our filters
// see drwho.virtadpt.net%2Ffiles%2FNOVALUG-Tor.odp
mimetype.startsWith(QLatin1String("application/x-openoffice"));
}
return true;
}
return false;
}
示例7: loadOdfFrameElement
bool PictureShape::loadOdfFrameElement(const KoXmlElement &element, KoShapeLoadingContext &context)
{
if (m_imageCollection) {
const QString href = element.attribute("href");
// this can happen in case it is a presentation:placeholder
if (!href.isEmpty()) {
KoStore *store = context.odfLoadingContext().store();
KoImageData *data = m_imageCollection->createImageData(href, store);
setUserData(data);
} else {
// check if we have an office:binary data element containing the image data
const KoXmlElement &binaryData(KoXml::namedItemNS(element, KoXmlNS::office, "binary-data"));
if (!binaryData.isNull()) {
QImage image;
if (image.loadFromData(QByteArray::fromBase64(binaryData.text().toLatin1()))) {
KoImageData *data = m_imageCollection->createImageData(image);
setUserData(data);
}
}
}
}
loadText(element, context);
return true;
}
示例8: supports
bool PictureShapeFactory::supports(const KoXmlElement &e, KoShapeLoadingContext &context) const
{
if (e.localName() == "image" && e.namespaceURI() == KoXmlNS::draw) {
QString href = e.attribute("href");
if (!href.isEmpty()) {
// check the mimetype
if (href.startsWith(QLatin1String("./"))) {
href.remove(0, 2);
}
QString mimetype = context.odfLoadingContext().mimeTypeForPath(href);
if (!mimetype.isEmpty()) {
return mimetype.startsWith("image");
}
else {
return ( href.endsWith("bmp") ||
href.endsWith("jpg") ||
href.endsWith("gif") ||
href.endsWith("eps") ||
href.endsWith("png") ||
href.endsWith("tif") ||
href.endsWith("tiff"));
}
}
else {
return !KoXml::namedItemNS(e, KoXmlNS::office, "binary-data").isNull();
}
}
return false;
}
示例9: loadStyle
void PictureShape::loadStyle(const KoXmlElement& element, KoShapeLoadingContext& context)
{
// Load the common parts of the style.
KoTosContainer::loadStyle(element, context);
KoStyleStack &styleStack = context.odfLoadingContext().styleStack();
styleStack.setTypeProperties("graphic");
// Mirroring
if (styleStack.hasProperty(KoXmlNS::style, "mirror")) {
QString mirrorMode = styleStack.property(KoXmlNS::style, "mirror");
QFlags<PictureShape::MirrorMode> mode = 0;
// Only one of the horizontal modes
if (mirrorMode.contains("horizontal-on-even")) {
mode |= MirrorHorizontalOnEven;
}
else if (mirrorMode.contains("horizontal-on-odd")) {
mode |= MirrorHorizontalOnOdd;
}
else if (mirrorMode.contains("horizontal")) {
mode |= MirrorHorizontal;
}
if (mirrorMode.contains("vertical")) {
mode |= MirrorVertical;
}
m_mirrorMode = mode;
}
// Color-mode (effects)
if (styleStack.hasProperty(KoXmlNS::draw, "color-mode")) {
QString colorMode = styleStack.property(KoXmlNS::draw, "color-mode");
if (colorMode == "greyscale") {
setColorMode(Greyscale);
}
else if (colorMode == "mono") {
setColorMode(Mono);
}
else if (colorMode == "watermark") {
setColorMode(Watermark);
}
}
// image opacity
QString opacity(styleStack.property(KoXmlNS::draw, "image-opacity"));
if (! opacity.isEmpty() && opacity.right(1) == "%") {
setTransparency(1.0 - (opacity.left(opacity.length() - 1).toFloat() / 100.0));
}
// clip rect
m_clippingRect = parseClippingRectString(styleStack.property(KoXmlNS::fo, "clip"));
}
示例10: loadStyle
void Rotate::loadStyle(const KoXmlElement& element, KoShapeLoadingContext& context)
{
// Load the common parts of the style.
KoShape::loadStyle(element, context);
KoStyleStack &styleStack = context.odfLoadingContext().styleStack();
styleStack.setTypeProperties("graphic");
QString dummy;
if (styleStack.hasProperty(KoXmlNS::dr3d, "horizontal-segments")) {
dummy = styleStack.property(KoXmlNS::dr3d, "horizontal-segments");
bool ok;
int hs = dummy.toInt(&ok);
if (ok) {
m_horizontalSegments = hs;
}
}
if (styleStack.hasProperty(KoXmlNS::dr3d, "vertical-segments")) {
dummy = styleStack.property(KoXmlNS::dr3d, "vertical-segments");
bool ok;
int vs = dummy.toInt(&ok);
if (ok) {
m_verticalSegments = vs;
}
}
if (styleStack.hasProperty(KoXmlNS::dr3d, "end-angle")) {
dummy = styleStack.property(KoXmlNS::dr3d, "end-angle");
bool ok;
qreal ea = dummy.toDouble(&ok);
if (ok) {
m_endAngle = ea;
}
}
if (styleStack.hasProperty(KoXmlNS::dr3d, "close-front")) {
dummy = styleStack.property(KoXmlNS::dr3d, "close-front");
m_closeFront = (dummy == "true");
}
if (styleStack.hasProperty(KoXmlNS::dr3d, "close-back")) {
dummy = styleStack.property(KoXmlNS::dr3d, "close-back");
m_closeBack = (dummy == "true");
}
// FIXME: Note that this can be a percentage (our test file has "80%").
if (styleStack.hasProperty(KoXmlNS::dr3d, "back-scale")) {
dummy = styleStack.property(KoXmlNS::dr3d, "back-scale");
bool ok;
qreal bs = dummy.toDouble(&ok);
if (ok) {
m_backScale = bs;
}
}
}
示例11: loadOdf
bool KPrPlaceholderTextStrategy::loadOdf( const KoXmlElement & element, KoShapeLoadingContext & context )
{
if (KoTextSharedLoadingData *textSharedData = dynamic_cast<KoTextSharedLoadingData *>(context.sharedData(KOTEXT_SHARED_LOADING_ID))) {
KoShapeFactoryBase *factory = KoShapeRegistry::instance()->value("TextShapeID");
Q_ASSERT(factory);
delete m_textShape;
m_textShape = factory->createDefaultShape(context.documentResourceManager());
KoTextShapeData *shapeData = qobject_cast<KoTextShapeData*>(m_textShape->userData());
shapeData->document()->setUndoRedoEnabled(false);
QTextDocument *document = shapeData->document();
QTextCursor cursor(document);
QTextBlock block = cursor.block();
const QString styleName = element.attributeNS(KoXmlNS::presentation, "style-name");
if (!styleName.isEmpty()) {
const KoXmlElement *style = context.odfLoadingContext().stylesReader().findStyle(styleName, "presentation", context.odfLoadingContext().useStylesAutoStyles());
if (style) {
KoParagraphStyle paragraphStyle;
paragraphStyle.loadOdf(style, context);
paragraphStyle.applyStyle(block, false); // TODO t.zachmann is the false correct?
}
}
const QString textStyleName = element.attributeNS(KoXmlNS::draw, "text-style-name");
if (!textStyleName.isEmpty()) {
KoParagraphStyle *style = textSharedData->paragraphStyle(textStyleName, context.odfLoadingContext().useStylesAutoStyles());
if (style) {
style->applyStyle(block, false); // TODO t.zachmann is the false correct?
}
}
cursor.insertText(text());
shapeData->setDirty();
shapeData->document()->setUndoRedoEnabled(true);
}
return true;
}
示例12: tryWrapShape
void ShrinkToFitShapeContainer::tryWrapShape(KoShape *shape, const KoXmlElement &element, KoShapeLoadingContext &context)
{
KoTextShapeData* data = dynamic_cast<KoTextShapeData*>(shape->userData());
if (!data || data->resizeMethod() != KoTextShapeData::ShrinkToFitResize)
return;
KoShapeContainer *oldParent = shape->parent();
ShrinkToFitShapeContainer *tos = wrapShape(shape, context.documentResourceManager());
if (!tos->loadOdf(element, context)) {
shape->setParent(oldParent);
delete tos;
}
}
示例13: loadOdfFrameElement
bool VideoShape::loadOdfFrameElement(const KoXmlElement &element, KoShapeLoadingContext &context)
{
/* the loading of the attributes might set the event actions which removes the m_videoEventAction
* when there are other eventactions for the shape. Therefore we need to add it again. It is no
* problem to add it again as internally a set is used and so it is not problematic when it is
* already set. */
addEventAction(m_videoEventAction);
if (m_videoCollection) {
const QString href = element.attribute("href");
// this can happen in case it is a presentation:placeholder
if (!href.isEmpty()) {
QUrl url = QUrl::fromUserInput(href);
VideoData *data=0;
if(href.startsWith("../")) {
// file is outside store
QUrl url = context.odfLoadingContext().store()->urlOfStore();
QString path = url.path();
if (!path.endsWith(QLatin1Char('/'))) {
path.append(QLatin1Char('/'));
}
path.append(href.mid(3));
url.setPath(path);
data = m_videoCollection->createExternalVideoData(url, false);
} else if(!url.isRelative()) {
// file is outside store and absolute
data = m_videoCollection->createExternalVideoData(QUrl::fromUserInput(href), false);
} else {
// file is inside store
KoStore *store = context.odfLoadingContext().store();
data = m_videoCollection->createVideoData(href, store);
}
setUserData(data);
}
}
return true;
}
示例14: QObject
KoTextLoader::KoTextLoader(KoShapeLoadingContext &context)
: QObject()
, d(new Private(context))
{
KoSharedLoadingData *sharedData = context.sharedData(KOTEXT_SHARED_LOADING_ID);
if (sharedData) {
d->textSharedData = dynamic_cast<KoTextSharedLoadingData *>(sharedData);
}
kDebug(32500) << "sharedData" << sharedData << "textSharedData" << d->textSharedData;
if (!d->textSharedData) {
d->textSharedData = new KoTextSharedLoadingData();
// TODO pass style manager so that on copy and paste we can recognice the same styles
d->textSharedData->loadOdfStyles(context.odfLoadingContext(), 0);
if (!sharedData) {
context.addSharedData(KOTEXT_SHARED_LOADING_ID, d->textSharedData);
} else {
kWarning(32500) << "A different type of sharedData was found under the" << KOTEXT_SHARED_LOADING_ID;
Q_ASSERT(false);
}
}
}
示例15: tryWrapShape
// static
void KoTextOnShapeContainer::tryWrapShape(KoShape *shape, const KoXmlElement &element, KoShapeLoadingContext &context)
{
KoXmlElement text = KoXml::namedItemNS(element, KoXmlNS::text, "p");
if (!text.isNull()) {
KoShapeContainer *oldParent = shape->parent();
KoTextOnShapeContainer *tos = new KoTextOnShapeContainer(shape,
context.documentResourceManager());
if (!tos->loadOdf(element, context)) {
// failed, delete it again.
shape->setParent(oldParent);
delete tos;
}
}
}