本文整理汇总了C++中Conversion类的典型用法代码示例。如果您正苦于以下问题:C++ Conversion类的具体用法?C++ Conversion怎么用?C++ Conversion使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Conversion类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: colour_extracted
cv::Mat ExtractColour::pcd2colourHSV(pcl::PointCloud<pcl::PointXYZRGBA> cloud)
{
cv::Mat colour_extracted(cloud.height*cloud.width, 3, CV_32F);
pcl::PointCloud<pcl::PointXYZRGBA>::ConstPtr cloudPtr (new pcl::PointCloud<pcl::PointXYZRGBA> (cloud));
Conversion conversion;
#pragma omp parallel
{
#pragma omp for shared (colour_extracted, cloud) private (i, j) reduction(+: sum)
{
for(int i=0; i<cloudPtr->width; i++)
for(int j = 0; j <cloudPtr->height; j++)
{
std::vector<double> hsv=conversion.rgb2hsv(cloudPtr->points[i].r,cloudPtr->points[i].g,cloudPtr->points[i].b); // perform RGB to HSV conversion
colour_extracted.at<float>(i + j*cloudPtr->width, 1) = hsv[0]; // save H parameter
colour_extracted.at<float>(i + j*cloudPtr->width, 2) = hsv[1]; // save S parameter
colour_extracted.at<float>(i + j*cloudPtr->width, 3) = hsv[2]; // save V parameter
}
}
}
return colour_extracted;
}
示例2: start_rtn
void* start_rtn(void* arg)
{
//printf("this is the void * return function\n");
Conversion * test = (Conversion *)malloc(sizeof(Conversion));
test = (Conversion *)arg;
test->start(test->arg);
//printf("conversion function pointer\n");
return NULL;
}
示例3: Conversion
void ConversionStation::buildConversions() {
//std::cout << "STATION" << std::endl;
for (auto& currentConversionNode : conversionsNode_) {
Conversion* newConversion = new Conversion();
newConversion->store(propertyTree());
newConversion->store(currentConversionNode.second);
newConversion->check();
newConversion->build();
conversions.push_back(newConversion);
}
}
示例4: main
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QCoreApplication::setOrganizationName("Infinite Interactive");
QCoreApplication::setOrganizationDomain("infiniteinteractive.com");
QCoreApplication::setApplicationName("Conversion");
Limitless::MediaPluginFactory::loadPlugins("./plugins/");
Conversion w;
w.show();
return a.exec();
}
示例5: kDebug
void WordsTableHandler::tableRowStart(wvWare::SharedPtr<const wvWare::Word97::TAP> tap)
{
kDebug(30513) ;
if (m_row == -2) {
kWarning(30513) << "tableRowStart: tableStart not called previously!";
return;
}
Q_ASSERT(m_currentTable);
Q_ASSERT(!m_currentTable->name.isEmpty());
m_row++;
m_column = -1;
m_tap = tap;
KoXmlWriter* writer = currentWriter();
//kDebug(30513) << "tableRowStart row=" << m_row
// << ", number of cells: " << tap->itcMac;
KoGenStyle rowStyle(KoGenStyle::TableRowAutoStyle, "table-row");
//in case a header or footer is processed, save the style into styles.xml
if (document()->writingHeader()) {
rowStyle.setAutoStyleInStylesDotXml(true);
}
// The 6 BRC objects are for top, left, bottom, right,
// insidehorizontal, insidevertical (default values).
for (int i = 0; i < 6; i++) {
const wvWare::Word97::BRC& brc = tap->rgbrcTable[i];
//kDebug(30513) << "default border" << brc.brcType << (brc.dptLineWidth / 8.0);
m_borderStyle[i] = Conversion::setBorderAttributes(brc);
m_margin[i] = QString::number(brc.dptSpace) + "pt";
}
// We ignore brc.dptSpace (spacing), brc.fShadow (shadow), and brc.fFrame (?)
QString rowHeightString = QString::number(twipsToPt(qAbs(tap->dyaRowHeight)), 'f').append("pt");
if (tap->dyaRowHeight > 0) {
rowStyle.addProperty("style:min-row-height", rowHeightString);
} else if (tap->dyaRowHeight < 0) {
rowStyle.addProperty("style:row-height", rowHeightString);
}
if (tap->fCantSplit) {
rowStyle.addProperty("fo:keep-together", "always");
}
QString rowStyleName = m_mainStyles->insert(rowStyle, QLatin1String("row"));
//start table row in content
writer->startElement("table:table-row");
writer->addAttribute("table:style-name", rowStyleName.toUtf8());
}
示例6: colours
std::vector<Matrix_double> ExtractColour::indexPCD2VectorLab(pcl::PointCloud<pcl::PointXYZRGBA> cloud, std::vector<int> index)
{
std::vector <Matrix_double> colours(3);
pcl::PointCloud<pcl::PointXYZRGBA>::ConstPtr cloudPtr (new pcl::PointCloud<pcl::PointXYZRGBA> (cloud));
Conversion conversion;
#pragma omp parallel
{
#pragma omp for shared (cloud, index, colours) private (i) reduction(+: sum)
{
for (int i=0; i<index.size(); i++)
{
std::vector<int> lab=conversion.rgb2lab(cloudPtr->points[index[i]].r,cloudPtr->points[index[i]].g,cloudPtr->points[index[i]].b); // perform RGB to Lab conversion
colours[i].columns.push_back(lab[0]); // save L parameter
colours[i].columns.push_back(lab[1]); // save a parameter
colours[i].columns.push_back(lab[2]); // save b parameter
}
}
}
return colours;
}
示例7: register_articles
/*
* Registers articles. The arguments in the specified
* list are (in order):
*
* install location
* datasheet filename
* parent mnemonic
* parent id
*
* All of these arguments are optional.
*
* The install location refers to the directory in which the software
* has been installed.
*
* The datasheet filename specifies the name of the file that contains
* the data representing articles to be registered. If the datasheet
* filename is not provided, the datasheet information will be read
* from stdin.
*
* The parent mnemonic specifies the name of the article which is the
* parent of the article(s) being registered with this call.
*
* The parent id specifies the instance of the article which is the
* parent of the article(s) being registered with this call.
*
* This function returns the id of the article being registered.
*/
static char *
register_articles(List *arg_list)
{
/*
* The default datasheet file is stdin.
*/
FILE *in = stdin;
char *result = NULL;
char *location = NULL;
char *parent_mnemonic = NULL;
char *parent_id = NULL;
Wsreg_component *parent_component = NULL;
List *matches = NULL;
List *article_list = NULL;
Conversion *conversion;
if (arg_list->size(arg_list) > 0) {
/*
* Install location, datasheet filename.
*/
char *path;
location = (char *)arg_list->element_at(arg_list, 0);
if (strcmp(location, "-") == 0) {
location = NULL;
}
path = (char *)arg_list->element_at(arg_list, 1);
in = NULL;
if (path != NULL) {
in = fopen(path, "r");
}
if (in == NULL) {
(void) fprintf(stderr, PRODREG_CANT_READ_FILE,
path);
(void) fprintf(stderr, "\n");
return ("");
}
if (arg_list->size(arg_list) > 2) {
/*
* Parent mnemonic, parent id.
*/
parent_mnemonic =
(char *)arg_list->element_at(arg_list, 2);
parent_id = (char *)arg_list->element_at(arg_list, 3);
if (parent_mnemonic != NULL &&
parent_id != NULL) {
matches =
get_matching_components(parent_mnemonic,
parent_id);
if (matches != NULL &&
matches->size(matches) == 1) {
parent_component =
(Wsreg_component *)
matches->element_at(matches, 0);
} else {
(void) fprintf(stderr,
PRODREG_NO_SUCH_COMPONENT,
parent_mnemonic, parent_id);
(void) fprintf(stderr, "\n");
}
}
}
}
article_list = read_articles(in);
conversion = _wsreg_conversion_create(NULL);
/*
* Creates associations between parent Article and
* child Article.
*/
conversion->create_associations(article_list);
//.........这里部分代码省略.........
示例8: wsreg_convert_registry
/*
* Converts the specified registry file. The specified file is
* removed if the conversion is successful. If conversion_count
* is not NULL, the total number of Articles converted will be
* passed back.
*/
int
wsreg_convert_registry(const char *filename, int *conversion_count,
Progress_function progress_callback)
{
File_util *futil = _wsreg_fileutil_initialize();
if (initialized == WSREG_NOT_INITIALIZED) {
return (WSREG_NOT_INITIALIZED);
}
if (!futil->exists(filename)) {
/*
* Bad filename.
*/
return (WSREG_FILE_NOT_FOUND);
}
if (futil->can_read(filename) && futil->can_write(filename)) {
/*
* The registry file can be read and removed.
*/
if (wsreg_can_access_registry(O_RDWR)) {
/*
* The conversion permissions are appropriate.
* Perform the conversion.
*/
int result;
int article_count = 0;
Progress *progress =
_wsreg_progress_create(
(Progress_callback)*progress_callback);
int count = 0;
Unz_article_input_stream *ain = NULL;
Conversion *c = NULL;
/*
* The first progress section represents the
* unzipping of the data file.
*/
progress->set_section_bounds(progress, 5, 1);
ain = _wsreg_uzais_open(filename, &result);
progress->finish_section(progress);
if (result != WSREG_SUCCESS) {
/*
* The open failed. Clean up and
* return the error code.
*/
if (ain != NULL) {
ain->close(ain);
}
progress->free(progress);
return (result);
}
c = _wsreg_conversion_create(progress);
/*
* The second progress section represents
* the reading of articles.
*/
article_count = ain->get_article_count(ain);
progress->set_section_bounds(progress, 8,
article_count);
while (ain->has_more_articles(ain)) {
Article *a = ain->get_next_article(ain);
if (a != NULL) {
c->add_article(c, a);
}
progress->increment(progress);
}
progress->finish_section(progress);
ain->close(ain);
/*
* The third progress section represents
* the conversion and registration of the
* resulting components.
*/
progress->set_section_bounds(progress, 100,
article_count);
count = c->register_components(c, NULL, FALSE);
progress->finish_section(progress);
/*
* Pass the count back to the caller.
*/
if (conversion_count != NULL) {
*conversion_count = count;
}
/*
* Remove the old registry file.
*/
futil->remove(filename);
//.........这里部分代码省略.........
示例9: kDebug
//.........这里部分代码省略.........
kDebug(30513) << "CellBorders=" << m_row << m_column
<< "top" << tc.brcTop.brcType << tc.brcTop.dptLineWidth
<< "left" << tc.brcLeft.brcType << tc.brcLeft.dptLineWidth
<< "bottom" << tc.brcBottom.brcType << tc.brcBottom.dptLineWidth
<< "right" << tc.brcRight.brcType << tc.brcRight.dptLineWidth;
#endif
const wvWare::Word97::BRC brcNone;
const wvWare::Word97::BRC& brcTop = (m_row > 0) ?
brcWinner(tc.brcTop, m_tap->rgbrcTable[4]) :
((tc.brcTop.brcType > 0 && tc.brcTop.brcType < 64) ? tc.brcTop : m_tap->rgbrcTable[0]);
const wvWare::Word97::BRC& brcBottom = (m_row < m_currentTable->rows.size() - 1) ?
brcWinner(tc.brcBottom, m_tap->rgbrcTable[4]) :
brcWinner(tc.brcBottom, m_tap->rgbrcTable[2]);
const wvWare::Word97::BRC& brcLeft = (m_column > 0) ?
brcWinner(tc.brcLeft, m_tap->rgbrcTable[5]) :
brcWinner(tc.brcLeft, m_tap->rgbrcTable[1]);
const wvWare::Word97::BRC& brcRight = (m_column < nbCells - 1) ?
brcWinner(tc.brcRight, m_tap->rgbrcTable[5]) :
brcWinner(tc.brcRight, m_tap->rgbrcTable[3]);
const wvWare::Word97::BRC& brcTL2BR = tc.brcTL2BR;
const wvWare::Word97::BRC& brcTR2BL = tc.brcTR2BL;
KOdfGenericStyle cellStyle(KOdfGenericStyle::TableCellAutoStyle, "table-cell");
//in case a header or footer is processed, save the style into styles.xml
if (document()->writingHeader()) {
cellStyle.setAutoStyleInStylesDotXml(true);
}
//set borders for the four edges of the cell
if (brcTop.brcType > 0 && brcTop.brcType < 64) {
cellStyle.addProperty("fo:border-top", Conversion::setBorderAttributes(brcTop));
QString kba = Conversion::borderKOfficeAttributes(brcTop);
if (!kba.isEmpty()) {
cellStyle.addProperty("koffice:specialborder-top",kba);
}
QString dba = Conversion::setDoubleBorderAttributes(brcTop);
if (!dba.isEmpty())
cellStyle.addProperty("style:border-line-width-top", dba);
}
//left
if (brcLeft.brcType > 0 && brcLeft.brcType < 64) {
cellStyle.addProperty("fo:border-left", Conversion::setBorderAttributes(brcLeft));
QString kba = Conversion::borderKOfficeAttributes(brcLeft);
if (!kba.isEmpty()) {
cellStyle.addProperty("koffice:specialborder-left",kba);
}
QString dba = Conversion::setDoubleBorderAttributes(brcLeft);
if (!dba.isEmpty())
cellStyle.addProperty("style:border-line-width-left", dba);
}
//bottom
if (brcBottom.brcType != 0 && brcBottom.brcType < 64) {
cellStyle.addProperty("fo:border-bottom", Conversion::setBorderAttributes(brcBottom));
QString kba = Conversion::borderKOfficeAttributes(brcBottom);
if (!kba.isEmpty()) {
cellStyle.addProperty("koffice:specialborder-bottom",kba);
}
QString dba = Conversion::setDoubleBorderAttributes(brcBottom);
if (!dba.isEmpty())
cellStyle.addProperty("style:border-line-width-bottom", dba);
}
示例10: Compose
//==============================================================================
/// Convenience function to compose two conversions.
///
/// \param [in] f The f(x) conversion.
/// \param [in] g The g(x) conversion.
///
/// \return A conversion for f(g(x)).
///
Conversion::AutoPtr Compose( const Conversion& f, const Conversion& g )
{
return f.Compose( g );
}
示例11: style
void WordsGraphicsHandler::processInlinePictureFrame(const MSO::OfficeArtSpContainer& o, DrawingWriter& out)
{
debugMsDoc ;
// Shape instance contained in OfficeArtInlineSpContainer. BLIP properties
// contained in o.shapePrimaryOptions or o.shapeTertiaryOptions1 are stored
// in the order they are encountered, and the property values
// OfficeArtFOPTE.opid.fBid, OfficeArtFOPTE.opid.fComplex, and
// OfficeArtFOPTE.op MUST be ignored. [MS-ODRAW] — v20101219
QString styleName;
KoGenStyle style(KoGenStyle::GraphicAutoStyle, "graphic");
style.setAutoStyleInStylesDotXml(out.stylesxml);
const MSO::OfficeArtDggContainer *dgg = 0;
#ifdef USE_OFFICEARTDGG_CONTAINER
dgg = &m_officeArtDggContainer;
#endif
DrawStyle ds(dgg, 0, &o);
DrawClient drawclient(this);
ODrawToOdf odrawtoodf(drawclient);
odrawtoodf.defineGraphicProperties(style, ds, out.styles);
definePositionAttributes(style, ds);
style.addProperty("fo:border-top", Conversion::setBorderAttributes(m_picf->brcTop));
style.addProperty("fo:border-left", Conversion::setBorderAttributes(m_picf->brcLeft));
style.addProperty("fo:border-bottom", Conversion::setBorderAttributes(m_picf->brcBottom));
style.addProperty("fo:border-right", Conversion::setBorderAttributes(m_picf->brcRight));
// NOTE: The default margin-left/margin-right values DO NOT make sense for
// inline pictures, also after conversion of test files to DOCX, both
// attributes were set to ZEROs. Default margin-top/margin-bottom is ZERO.
style.addPropertyPt("fo:margin", 0);
styleName = out.styles.insert(style);
// A diagram drawing canvas placed inline with surrounding text.
if (ds.fPseudoInline()) {
out.xml.startElement("draw:rect");
} else {
out.xml.startElement("draw:frame");
}
out.xml.addAttribute("draw:style-name", styleName);
setAnchorTypeAttribute(out);
setZIndexAttribute(out);
double hscale = m_picf->mx / 1000.0;
double vscale = m_picf->my / 1000.0;
out.xml.addAttributePt("svg:width", twipsToPt(m_picf->dxaGoal) * hscale);
out.xml.addAttributePt("svg:height", twipsToPt(m_picf->dyaGoal) * vscale);
QString name = m_picNames.value(m_rgbUid);
QString url;
if (!name.isEmpty()) {
url.append("Pictures/");
url.append(name);
} else {
// if the image cannot be found, just place an empty frame
out.xml.endElement(); //draw:frame (draw:rect)
return;
}
//TODO: process border information (complex properties)
out.xml.startElement("draw:image");
out.xml.addAttribute("xlink:href", url);
out.xml.addAttribute("xlink:type", "simple");
out.xml.addAttribute("xlink:show", "embed");
out.xml.addAttribute("xlink:actuate", "onLoad");
out.xml.endElement(); //draw:image
out.xml.endElement(); //draw:frame
return;
}
示例12:
QDebug operator<<( QDebug out, const Conversion& conv )
{
return out << conv.ToString();
}
示例13: insertEmptyInlineFrame
void WordsGraphicsHandler::insertEmptyInlineFrame(DrawingWriter& out)
{
if (m_objectType != Inline) return;
QString styleName;
KoGenStyle style(KoGenStyle::GraphicAutoStyle, "graphic");
style.setAutoStyleInStylesDotXml(out.stylesxml);
DrawStyle ds;
DrawClient drawclient(this);
ODrawToOdf odrawtoodf(drawclient);
odrawtoodf.defineGraphicProperties(style, ds, out.styles);
definePositionAttributes(style, ds);
defineWrappingAttributes(style, ds);
styleName = out.styles.insert(style);
out.xml.startElement("draw:frame");
out.xml.addAttribute("draw:style-name", styleName);
setAnchorTypeAttribute(out);
setZIndexAttribute(out);
double hscale = m_picf->mx / 1000.0;
double vscale = m_picf->my / 1000.0;
out.xml.addAttributePt("svg:width", twipsToPt(m_picf->dxaGoal) * hscale);
out.xml.addAttributePt("svg:height", twipsToPt(m_picf->dyaGoal) * vscale);
out.xml.endElement(); //draw:frame
}
示例14: tableStart
// Called by Document before invoking the table-row-functors
void KWordTableHandler::tableStart(KWord::Table* table)
{
kDebug(30513);
Q_ASSERT(table);
Q_ASSERT(!table->name.isEmpty());
KXmlWriter* writer = currentWriter();
wvWare::SharedPtr<const wvWare::Word97::TAP> tap = table->tap;
m_currentTable = table;
m_cellOpen = false;
#if 0
for (unsigned int i = 0; i < (unsigned int)table->m_cellEdges.size(); i++)
kDebug(30513) << table->m_cellEdges[i];
#endif
m_row = -1;
m_currentY = 0;
//check if the table is inside of an absolutely positioned frame
if ( (tap->dxaAbs != 0 || tap->dyaAbs) )
{
KOdfGenericStyle userStyle(KOdfGenericStyle::GraphicAutoStyle, "graphic");
QString drawStyleName;
int dxaAbs = 0;
writer->startElement("text:p", false);
writer->addAttribute("text:style-name", "Standard");
//process wrapping information
if (tap->textWrap) {
//right aligned
if (tap->dxaAbs == -8) {
userStyle.addProperty("style:wrap", "left");
}
//left aligned
else if (tap->dxaAbs == 0) {
userStyle.addProperty("style:wrap", "right");
} else {
userStyle.addProperty("style:wrap", "parallel");
}
//ODF-1.2: specifies the number of paragraphs that can wrap around a
//frame if wrap mode is in {left, right, parallel, dynamic} and
//anchor type is in {char, paragraph}
userStyle.addProperty("style:number-wrapped-paragraphs", "no-limit");
} else {
userStyle.addProperty("style:wrap", "none");
}
//margin information is related to wrapping of text around the table
userStyle.addPropertyPt("fo:margin-left", twipsToPt(tap->dxaFromText));
userStyle.addPropertyPt("fo:margin-right", twipsToPt(tap->dxaFromTextRight));
userStyle.addPropertyPt("fo:margin-top", twipsToPt(tap->dyaFromText));
userStyle.addPropertyPt("fo:margin-bottom", twipsToPt(tap->dyaFromTextBottom));
//MS-DOC - sprmPDxaAbs - relative horizontal position to anchor
// (-4) - center, (-8) - right, (-12) - inside, (-16) - outside
if (tap->dxaAbs == -4) {
userStyle.addProperty("style:horizontal-pos","center");
}
else if (tap->dxaAbs == -8) {
userStyle.addProperty("style:horizontal-pos","right");
userStyle.addPropertyPt("fo:margin-right", 0);
}
else if (tap->dxaAbs == -12) {
userStyle.addProperty("style:horizontal-pos","inside");
}
else if (tap->dxaAbs == -16) {
userStyle.addProperty("style:horizontal-pos","outside");
}
else {
dxaAbs = tap->dxaAbs;
userStyle.addProperty("style:horizontal-pos","from-left");
userStyle.addPropertyPt("fo:margin-left", 0);
}
int dyaAbs = 0;
//MS-DOC - sprmPDyaAbs - relative vertical position to anchor
// (-4) - top, (-8) - middle, (-12) - bottom, (-16) - inside,
// (-20) - outside
if (tap->dyaAbs == -4) {
userStyle.addProperty("style:vertical-pos","top");
}
else if (tap->dyaAbs == -8) {
userStyle.addProperty("style:vertical-pos","middle");
}
else if (tap->dyaAbs == -12) {
userStyle.addProperty("style:vertical-pos","bottom");
}
else if (tap->dyaAbs == -16) {
userStyle.addProperty("style:vertical-pos","inline");
}
else if (tap->dyaAbs == -20) {
userStyle.addProperty("style:vertical-pos","inline");
}
else {
dyaAbs = tap->dyaAbs;
//.........这里部分代码省略.........
示例15: processFloatingPictureFrame
void WordsGraphicsHandler::processFloatingPictureFrame(const MSO::OfficeArtSpContainer& o, DrawingWriter& out)
{
debugMsDoc ;
const MSO::OfficeArtDggContainer *dgg = 0;
#ifdef USE_OFFICEARTDGG_CONTAINER
dgg = &m_officeArtDggContainer;
#endif
DrawStyle ds(dgg, 0, &o);
// A value of 0x00000000 MUST be ignored. [MS-ODRAW] — v20101219
if (!ds.pib()) return;
QString styleName;
KoGenStyle style(KoGenStyle::GraphicAutoStyle, "graphic");
style.setAutoStyleInStylesDotXml(out.stylesxml);
DrawClient drawclient(this);
ODrawToOdf odrawtoodf(drawclient);
odrawtoodf.defineGraphicProperties(style, ds, out.styles);
definePositionAttributes(style, ds);
defineWrappingAttributes(style, ds);
styleName = out.styles.insert(style);
out.xml.startElement("draw:frame");
out.xml.addAttribute("draw:style-name", styleName);
setAnchorTypeAttribute(out);
setZIndexAttribute(out);
out.xml.addAttribute("svg:width", mm(out.hLength()));
out.xml.addAttribute("svg:height", mm(out.vLength()));
out.xml.addAttribute("svg:x", mm(out.hOffset()));
out.xml.addAttribute("svg:y", mm(out.vOffset()));
QString url = getPicturePath(ds.pib());
//if the image cannot be found, just place an empty frame
if (url.isEmpty()) {
out.xml.endElement(); //draw:frame
return;
}
out.xml.startElement("draw:image");
out.xml.addAttribute("xlink:href", url);
out.xml.addAttribute("xlink:type", "simple");
out.xml.addAttribute("xlink:show", "embed");
out.xml.addAttribute("xlink:actuate", "onLoad");
out.xml.endElement(); //draw:image
//check for user edited wrap points
#if 0
if (ds.fEditedWrap()) {
QString points;
IMsoArray _v = ds.pWrapPolygonVertices_complex();
if (_v.data.size()) {
//_v.data is an array of POINTs, MS-ODRAW, page 89
QByteArray a, a2;
int* p;
for (int i = 0, offset = 0; i < _v.nElems; i++, offset += _v.cbElem) {
// x coordinate of this point
a = _v.data.mid(offset, _v.cbElem);
a2 = a.mid(0, _v.cbElem / 2);
p = (int*) a2.data();
points.append(QString::number(twipsToPt(*p), 'f'));
points.append(",");
// y coordinate of this point
a2 = a.mid(_v.cbElem / 2, _v.cbElem / 2);
p = (int*) a2.data();
points.append(QString::number(twipsToPt(*p), 'f'));
points.append(" ");
}
points.chop(1); //remove last space
}
out.xml.startElement("draw:contour-polygon");
out.xml.addAttribute("draw:points", points);
out.xml.endElement(); //draw:contour-polygon
}
#endif
out.xml.endElement(); //draw:frame
return;
}