diff --git a/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp b/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp --- a/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp +++ b/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp @@ -25,7 +25,6 @@ #include "xmltk.h" #include -#include #include // splitCellRange() et al. @@ -225,14 +224,14 @@ std::vector& charts = worksheetHandler->charts(); if (charts.empty()) { - std::cerr << "Got a chart substream without having charts in the worksheet"; + qCWarning(lcSidewinder) << "Got a chart substream without having charts in the worksheet"; return; } const unsigned long id = charts.back(); std::map::iterator it = worksheetHandler->sharedObjects().find(id); if (it == worksheetHandler->sharedObjects().end()) { - std::cerr << "Got a chart substream without having a chart in the worksheet"; + qCWarning(lcSidewinder) << "Got a chart substream without having a chart in the worksheet"; return; } m_chartObject = dynamic_cast(it->second); @@ -247,7 +246,7 @@ } else { Q_ASSERT(globals); if (globals->chartSheets().isEmpty()) { - std::cerr << "ChartSubStreamHandler: Got a chart substream without having enough chart sheets..." << std::endl; + qCWarning(lcSidewinder) << "ChartSubStreamHandler: Got a chart substream without having enough chart sheets..."; } else { #if 0 m_sheet = globals->chartSheets().takeFirst(); @@ -269,7 +268,7 @@ Cell* cell = m_sheet->cell(0, 0, true); // anchor to the first cell cell->addChart(m_chartObject); #else - std::cerr << "ChartSubStreamHandler: FIXME" << std::endl; + qCWarning(lcSidewinder) << "ChartSubStreamHandler: FIXME"; #endif } } @@ -297,16 +296,8 @@ RecordRegistry::unregisterRecordClass(CrtMlFrtRecord::id); } -std::string whitespaces(int number) -{ - std::string s; - for (int i = 0; i < number; ++i) - s += " "; - return s; -} - #define DEBUG \ - std::cout << whitespaces(m_stack.count()) << "ChartSubStreamHandler::" << __FUNCTION__ << " " + qCDebug(lcSidewinder) << QString(m_stack.count(), QChar(' ')) << "ChartSubStreamHandler::" << __FUNCTION__ void ChartSubStreamHandler::handleRecord(Record* record) { @@ -464,19 +455,17 @@ else if (type == StartBlockRecord::id || type == EndBlockRecord::id) {} // not evaluated atm else { - DEBUG << "Unhandled chart record with type=" << type << " name=" << record->name() << std::endl; + DEBUG << "Unhandled chart record with type=" << type << "name=" << record->name(); //record->dump(std::cout); } } void ChartSubStreamHandler::handleBOF(BOFRecord*) { - //DEBUG << std::endl; } void ChartSubStreamHandler::handleEOF(EOFRecord *) { - //DEBUG << std::endl; } void ChartSubStreamHandler::handleFooter(FooterRecord *) @@ -530,13 +519,15 @@ void ChartSubStreamHandler::handleDimension(DimensionRecord *record) { if (!record) return; - DEBUG << "firstRow=" << record->firstRow() << " lastRowPlus1=" << record->lastRowPlus1() << " firstColumn=" << record->firstColumn() << " lastColumnPlus1=" << record->lastColumnPlus1() << " lastRow=" << record->lastRow() << " lastColumn=" << record->lastColumn() << std::endl; + DEBUG << "firstRow=" << record->firstRow() << "lastRowPlus1=" << record->lastRowPlus1() + << "firstColumn=" << record->firstColumn() << "lastColumnPlus1=" << record->lastColumnPlus1() + << "lastRow=" << record->lastRow() << "lastColumn=" << record->lastColumn(); } void ChartSubStreamHandler::handleChart(ChartRecord *record) { if (!record) return; - DEBUG << "x=" << record->x() << " y=" << record->y() << " width=" << record->width() << " height=" << record->height() << std::endl; + DEBUG << "x=" << record->x() << "y=" << record->y() << "width=" << record->width() << "height=" << record->height(); m_chart->m_x1 = record->x(); m_chart->m_y1 = record->y(); m_chart->m_x2 = record->width() - m_chart->m_x1; @@ -562,7 +553,7 @@ void ChartSubStreamHandler::handleFrame(FrameRecord *record) { if (!record) return; - DEBUG << "autoPosition=" << record->isAutoPosition() << " autoSize=" << record->isAutoSize() << std::endl; + DEBUG << "autoPosition=" << record->isAutoPosition() << "autoSize=" << record->isAutoSize(); if ( dynamic_cast< KoChart::Chart* > ( m_currentObj ) ) { if (record->isAutoPosition()) { m_chart->m_x1 = -1; @@ -581,7 +572,9 @@ void ChartSubStreamHandler::handleSeries(SeriesRecord *record) { if (!record) return; - DEBUG << "dataTypeX=" << record->dataTypeX() << " dataTypeY=" << record->dataTypeY() << " countXValues=" << record->countXValues() << " countYValues=" << record->countYValues() << " bubbleSizeDataType=" << record->bubbleSizeDataType() << " countBubbleSizeValues=" << record->countBubbleSizeValues() << std::endl; + DEBUG << "dataTypeX=" << record->dataTypeX() << "dataTypeY=" << record->dataTypeY() << "countXValues=" << record->countXValues() + << "countYValues=" << record->countYValues() << "bubbleSizeDataType=" << record->bubbleSizeDataType() + << "countBubbleSizeValues=" << record->countBubbleSizeValues(); m_currentSeries = new KoChart::Series; m_currentSeries->m_dataTypeX = record->dataTypeX(); @@ -595,15 +588,15 @@ void ChartSubStreamHandler::handleSeriesList(SeriesListRecord *record) { - DEBUG << "cser=" << record->cser() << std::endl; + DEBUG << "cser=" << record->cser(); for(unsigned i = 0; i < record->cser(); ++i) - DEBUG << "number=" << i << " rgiser=" << record->rgiser(i) << std::endl; + DEBUG << "number=" << i << "rgiser=" << record->rgiser(i); //TODO } void ChartSubStreamHandler::handleNumber(NumberRecord *record) { - DEBUG << "row=" << record->row() << " column=" << record->column() << " xfIndex=" << record->xfIndex() << " number=" << record->number() << std::endl; + DEBUG << "row=" << record->row() << "column=" << record->column() << "xfIndex=" << record->xfIndex() << "number=" << record->number(); // The formatting of the value doesn't really matter or does it? Well, maybe for data-value-label's that should be displayed as formatted? //m_xfTable[record->xfIndex()] @@ -620,7 +613,9 @@ void ChartSubStreamHandler::handleBRAI(BRAIRecord *record) { if (!record) return; - DEBUG << "dataId=" << record->m_value->m_dataId << " type=" << record->m_value->m_type << " isUnlinkedNumberFormat=" << record->m_value->m_isUnlinkedFormat << " numberFormat=" << record->m_value->m_numberFormat << " formula=" << record->m_value->m_formula.toUtf8().constData() << std::endl; + DEBUG << "dataId=" << record->m_value->m_dataId << "type=" << record->m_value->m_type + << "isUnlinkedNumberFormat=" << record->m_value->m_isUnlinkedFormat + << "numberFormat=" << record->m_value->m_numberFormat << "formula=" << record->m_value->m_formula.toUtf8(); if (m_currentSeries) { // FIXME: Is that correct or do we need to take the series @@ -658,9 +653,9 @@ void ChartSubStreamHandler::handleDataFormat(DataFormatRecord *record) { if (!record) return; - DEBUG << "xi=" << record->xi() << " yi=" << record->yi() << " iss=" << record->iss() << std::endl; + DEBUG << "xi=" << record->xi() << "yi=" << record->yi() << "iss=" << record->iss(); if (record->yi() >= uint(m_chart->m_series.count())) { - DEBUG << "Invalid series index=" << record->yi() << std::endl; + DEBUG << "Invalid series index=" << record->yi(); m_currentObj = 0; // be sure to ignore all defined sub-elements return; } @@ -671,7 +666,7 @@ } else { // applies to data-point KoChart::DataPoint *dataPoint = 0; if (record->xi() > uint(m_currentSeries->m_dataPoints.count())) { - DEBUG << "Invalid data-point index=" << record->yi() << std::endl; + DEBUG << "Invalid data-point index=" << record->yi(); } else if (record->xi() == uint(m_currentSeries->m_dataPoints.count())) { dataPoint = new KoChart::DataPoint(); m_currentSeries->m_dataPoints << dataPoint; @@ -685,23 +680,24 @@ void ChartSubStreamHandler::handleChart3DBarShape(Chart3DBarShapeRecord * record) { if (!record) return; - DEBUG << "riser=" << record->riser() << " taper=" << record->taper() << std::endl; + DEBUG << "riser=" << record->riser() << "taper=" << record->taper(); //TODO } // specifies that chart is rendered in 3d scene void ChartSubStreamHandler::handleChart3d(Chart3dRecord *record) { if (!record) return; - DEBUG << "anRot=" << record->anRot() << " anElev=" << record->anElev() << " pcDist=" << record->pcDist() << " pcHeight=" << record->pcHeight() << " pcDepth=" << record->pcDepth() << std::endl; + DEBUG << "anRot=" << record->anRot() << "anElev=" << record->anElev() << "pcDist=" << record->pcDist() + << "pcHeight=" << record->pcHeight() << "pcDepth=" << record->pcDepth(); m_chart->m_is3d = true; //TODO } void ChartSubStreamHandler::handleLineFormat(LineFormatRecord *record) { if (!record) return; - DEBUG << "lns=" << record->lns() << " we=" << record->we() << " fAxisOn=" << record->isFAxisOn() << std::endl; + DEBUG << "lns=" << record->lns() << "we=" << record->we() << "fAxisOn=" << record->isFAxisOn(); if (KoChart::Axis* axis = dynamic_cast(m_currentObj)) { KoChart::LineFormat format(KoChart::LineFormat::Style(record->lns()), KoChart::LineFormat::Thickness(record->we())); switch(m_axisId) { @@ -761,7 +757,7 @@ Q_ASSERT( false ); } else if ( dynamic_cast< KoChart::Chart* > ( m_currentObj ) ) { - DEBUG << "color=" << QColor( record->red(), record->green(), record->blue() ).name() << "automatic=" << record->isFAuto() << std::endl; + DEBUG << "color=" << QColor( record->red(), record->green(), record->blue() ).name() << "automatic=" << record->isFAuto(); //m_chart->m_showLines = record->isFAuto(); Q_ASSERT( !dynamic_cast< KoChart::Series* > ( m_currentSeries ) ); } @@ -805,7 +801,8 @@ background = QColor(record->redBackground(), record->greenBackground(), record->blueBackground()); } - DEBUG << "foreground=" << foreground.name() << " background=" << background.name() << " fillStyle=" << record->fls() << " fAuto=" << record->isFAuto() << std::endl; + DEBUG << "foreground=" << foreground.name() << "background=" << background.name() + << "fillStyle=" << record->fls() << "fAuto=" << record->isFAuto(); m_currentObj->m_areaFormat = new KoChart::AreaFormat(foreground, background, fill); @@ -824,14 +821,14 @@ { if (!record) return; if (!m_currentSeries) return; - DEBUG << "pcExplode=" << record->pcExplode() << std::endl; + DEBUG << "pcExplode=" << record->pcExplode(); m_currentSeries->m_datasetFormat << new KoChart::PieFormat(record->pcExplode()); } void ChartSubStreamHandler::handleMarkerFormat(MarkerFormatRecord *record) { if (!record) return; - DEBUG << "fAuto=" << record->fAuto() << " imk=" << record->imk() << std::endl; + DEBUG << "fAuto=" << record->fAuto() << "imk=" << record->imk(); const bool legend = dynamic_cast< KoChart::Legend* >( m_currentObj ); if ( m_disableAutoMarker && legend ) return; @@ -923,29 +920,31 @@ void ChartSubStreamHandler::handleChartFormat(ChartFormatRecord *record) { if (!record) return; - DEBUG << "fVaried=" << record->isFVaried() << std::endl; + DEBUG << "fVaried=" << record->isFVaried(); //TODO } void ChartSubStreamHandler::handleGelFrame(GelFrameRecord *record) { if (!record) return; - DEBUG << std::endl; + DEBUG << ""; //TODO } // specifies the chartgroup for the current series void ChartSubStreamHandler::handleSerToCrt(SerToCrtRecord *record) { if (!record) return; - DEBUG << "id=" << record->identifier() << std::endl; + DEBUG << "id=" << record->identifier(); } // properties void ChartSubStreamHandler::handleShtProps(ShtPropsRecord *record) { if (!record) return; - DEBUG << "fManSerAlloc=" << record->isFManSerAlloc() << " fPlotVisOnly=" << record->isFPlotVisOnly() << " fNotSizeWIth=" << record->isFNotSizeWIth() << " fManPlotArea=" << record->isFManPlotArea() << " fAlwaysAutoPlotArea=" << record->isFAlwaysAutoPlotArea() << " mdBlank=" << record->mdBlank() << std::endl; + DEBUG << "fManSerAlloc=" << record->isFManSerAlloc() << "fPlotVisOnly=" << record->isFPlotVisOnly() + << "fNotSizeWIth=" << record->isFNotSizeWIth() << "fManPlotArea=" << record->isFManPlotArea() + << "fAlwaysAutoPlotArea=" << record->isFAlwaysAutoPlotArea() << "mdBlank=" << record->mdBlank(); //TODO } @@ -962,22 +961,22 @@ void ChartSubStreamHandler::handleDefaultText(DefaultTextRecord *record) { if (!record) return; - DEBUG << "id=" << record->identifier() << std::endl; + DEBUG << "id=" << record->identifier(); m_defaultTextId = record->identifier(); } // specifies the properties of an attached label void ChartSubStreamHandler::handleText(TextRecord *record) { if (!record || record->isFDeleted()) return; DEBUG << "at=" << record->at() - << " vat=" << record->vat() - << " x=" << record->x() - << " y=" << record->y() - << " dx=" << record->dx() - << " dy=" << record->dy() - << " fShowKey=" << record->isFShowKey() - << " fShowValue=" << record->isFShowValue() << std::endl; + << "vat=" << record->vat() + << "x=" << record->x() + << "y=" << record->y() + << "dx=" << record->dx() + << "dy=" << record->dy() + << "fShowKey=" << record->isFShowKey() + << "fShowValue=" << record->isFShowValue(); m_currentObj = new KoChart::Text; if (m_defaultTextId >= 0) { @@ -989,7 +988,7 @@ void ChartSubStreamHandler::handleSeriesText(SeriesTextRecord* record) { if (!record || !m_currentSeries) return; - DEBUG << "text=" << record->text() << std::endl; + DEBUG << "text=" << record->text(); if (KoChart::Text *t = dynamic_cast(m_currentObj)) { t->m_text = record->text(); } else if (KoChart::Legend *l = dynamic_cast(m_currentObj)) { @@ -1005,7 +1004,8 @@ void ChartSubStreamHandler::handlePos(PosRecord *record) { if (!record) return; - DEBUG << "mdTopLt=" << record->mdTopLt() << " mdBotRt=" << record->mdBotRt() << " x1=" << record->x1() << " y1=" << record->y1() << " x2=" << record->x2() << " y2=" << record->y2() << std::endl; + DEBUG << "mdTopLt=" << record->mdTopLt() << "mdBotRt=" << record->mdBotRt() + << "x1=" << record->x1() << "y1=" << record->y1() << "x2=" << record->x2() << "y2=" << record->y2(); if (m_currentObj) { m_currentObj->m_mdBotRt = record->mdBotRt(); @@ -1020,21 +1020,23 @@ void ChartSubStreamHandler::handleFontX(FontXRecord *record) { if (!record) return; - DEBUG << std::endl; + DEBUG << ""; //TODO } void ChartSubStreamHandler::handlePlotGrowth(PlotGrowthRecord *record) { if (!record) return; - DEBUG << std::endl; + DEBUG << ""; //TODO } void ChartSubStreamHandler::handleLegend(LegendRecord *record) { if (!record) return; - DEBUG << "fAutoPosition=" << record->isFAutoPosition() << " fAutoPosX=" << record->isFAutoPosX() << " fAutoPosY=" << record->isFAutoPosY() << " fVert=" << record->isFVert() << " fWasDataTable=" << record->isFWasDataTable() << std::endl; + DEBUG << "fAutoPosition=" << record->isFAutoPosition() << "fAutoPosX=" << record->isFAutoPosX() + << "fAutoPosY=" << record->isFAutoPosY() << "fVert=" << record->isFVert() + << "fWasDataTable=" << record->isFWasDataTable(); m_currentObj = m_chart->m_legend = new KoChart::Legend(); } @@ -1045,7 +1047,7 @@ void ChartSubStreamHandler::handleAxesUsed(AxesUsedRecord *record) { if (!record) return; - DEBUG << "cAxes=" << record->cAxes() << std::endl; + DEBUG << "cAxes=" << record->cAxes(); //TODO } @@ -1056,15 +1058,15 @@ void ChartSubStreamHandler::handleAxisParent(AxisParentRecord *record) { if (!record) return; - DEBUG << "iax=" << record->iax() << std::endl; + DEBUG << "iax=" << record->iax(); //TODO } // specifies that the chartgroup is a pie chart void ChartSubStreamHandler::handlePie(PieRecord *record) { if (!record || m_chart->m_impl) return; - DEBUG << "anStart=" << record->anStart() << " pcDonut=" << record->pcDonut() << std::endl; + DEBUG << "anStart=" << record->anStart() << "pcDonut=" << record->pcDonut(); if (record->pcDonut() > 0) m_chart->m_impl = new KoChart::RingImpl(record->anStart(), record->pcDonut()); else @@ -1075,7 +1077,8 @@ void ChartSubStreamHandler::handleBar(BarRecord *record) { if (!record || m_chart->m_impl) return; - DEBUG << "pcOverlap=" << record->pcOverlap() << " pcGap=" << record->pcGap() << " fTranspose=" << record->isFTranspose() << " fStacked=" << record->isFStacked() << " f100=" << record->isF100() << std::endl; + DEBUG << "pcOverlap=" << record->pcOverlap() << "pcGap=" << record->pcGap() << "fTranspose=" << record->isFTranspose() + << "fStacked=" << record->isFStacked() << "f100=" << record->isF100(); m_chart->m_impl = new KoChart::BarImpl(); m_chart->m_transpose = record->isFTranspose(); m_chart->m_stacked = record->isFStacked(); @@ -1086,7 +1089,7 @@ void ChartSubStreamHandler::handleArea(AreaRecord* record) { if (!record || m_chart->m_impl) return; - DEBUG << std::endl; + DEBUG << ""; m_chart->m_impl = new KoChart::AreaImpl(); m_chart->m_stacked = record->isFStacked(); m_chart->m_f100 = record->isF100(); @@ -1096,7 +1099,7 @@ void ChartSubStreamHandler::handleLine(LineRecord* record) { if (!record || m_chart->m_impl) return; - DEBUG << std::endl; + DEBUG << ""; m_chart->m_impl = new KoChart::LineImpl(); m_chart->m_stacked = record->isFStacked(); m_chart->m_f100 = record->isF100(); @@ -1113,7 +1116,7 @@ void ChartSubStreamHandler::handleScatter(ScatterRecord* record) { if (!record || m_chart->m_impl) return; - DEBUG << std::endl; + DEBUG << ""; if (record->isFBubbles()) m_chart->m_impl = new KoChart::BubbleImpl(KoChart::BubbleImpl::SizeType(record->wBubbleSize()), record->pcBubbleSizeRatio(), record->isFShowNegBubbles()); else @@ -1155,31 +1158,31 @@ void ChartSubStreamHandler::handleRadar(RadarRecord *record) { if (!record || m_chart->m_impl) return; - DEBUG << std::endl; + DEBUG << ""; m_chart->m_impl = new KoChart::RadarImpl(false); m_chart->m_markerType = KoChart::AutoMarker; } // specifies that the chartgroup is a filled radar chart void ChartSubStreamHandler::handleRadarArea(RadarAreaRecord *record) { if (!record || m_chart->m_impl) return; - DEBUG << std::endl; + DEBUG << ""; m_chart->m_impl = new KoChart::RadarImpl(true); } // specifies that the chartgroup is a surface chart void ChartSubStreamHandler::handleSurf(SurfRecord *record) { if (!record || m_chart->m_impl) return; - DEBUG << std::endl; + DEBUG << ""; m_chart->m_impl = new KoChart::SurfaceImpl(record->isFFillSurface()); } void ChartSubStreamHandler::handleAxis(AxisRecord* record) { if (!record) return; - DEBUG << "wType=" << record->wType() << std::endl; + DEBUG << "wType=" << record->wType(); KoChart::Axis* axis = new KoChart::Axis(KoChart::Axis::Type(record->wType())); m_chart->m_axes << axis; m_currentObj = axis; @@ -1189,7 +1192,7 @@ void ChartSubStreamHandler::handleAxisLine(AxisLineRecord* record) { if (!record) return; - DEBUG << "identifier=" << record->identifier() << std::endl; + DEBUG << "identifier=" << record->identifier(); m_axisId = record->identifier(); } @@ -1216,44 +1219,44 @@ { if (!record) return; void handleCatLab(CatLabRecord* record); - DEBUG << "wOffset=" << record->wOffset() << " at=" << record->at() << " cAutoCatLabelReal=" << record->cAutoCatLabelReal() << std::endl; + DEBUG << "wOffset=" << record->wOffset() << "at=" << record->at() << "cAutoCatLabelReal=" << record->cAutoCatLabelReal(); //TODO } // Type of data contained in the Number records following. void ChartSubStreamHandler::handleSIIndex(SIIndexRecord *record) { if (!record) return; - DEBUG << "numIndex=" << record->numIndex() << std::endl; + DEBUG << "numIndex=" << record->numIndex(); Q_ASSERT(!m_internalDataCache); m_internalDataCache = new InternalDataCache(this, record->numIndex()); } void ChartSubStreamHandler::handleMsoDrawing(MsoDrawingRecord* record) { if (!record) return; - DEBUG << std::endl; + DEBUG << ""; //TODO } void ChartSubStreamHandler::handleShapePropsStream(ShapePropsStreamRecord* record) { if (!record) return; - DEBUG << "wObjContext=" << record->wObjContext() << "rgbLength=" << record->rgb().length() << " rgbString=" << record->rgb() << std::endl; + DEBUG << "wObjContext=" << record->wObjContext() << "rgbLength=" << record->rgb().length() << "rgbString=" << record->rgb(); //TODO } void ChartSubStreamHandler::handleTextPropsStream(TextPropsStreamRecord* record) { if (!record) return; - DEBUG << "rgbLength=" << record->rgb().length() << " rgbString=" << record->rgb() << std::endl; + DEBUG << "rgbLength=" << record->rgb().length() << "rgbString=" << record->rgb(); //TODO } void ChartSubStreamHandler::handleObjectLink(ObjectLinkRecord *record) { if (!record) return; - DEBUG << "wLinkObj=" << record->wLinkObj() << " wLinkVar1=" << record->wLinkVar1() << " wLinkVar2=" << record->wLinkVar2() << std::endl; + DEBUG << "wLinkObj=" << record->wLinkObj() << "wLinkVar1=" << record->wLinkVar1() << "wLinkVar2=" << record->wLinkVar2(); KoChart::Text *t = dynamic_cast(m_currentObj); if (!t) return; // if the current object is not text, just do nothing @@ -1288,14 +1291,16 @@ void ChartSubStreamHandler::handlePlotArea(PlotAreaRecord *record) { if (!record) return; - DEBUG << std::endl; + DEBUG << ""; m_currentObj = m_chart->m_plotArea = new KoChart::PlotArea(); } void ChartSubStreamHandler::handleValueRange(ValueRangeRecord *record) { if (!record) return; - DEBUG << "fAutoMin=" << record->isFAutoMin() << " fAutoMax=" << record->isFAutoMax() << " fAutoMajor=" << record->isFAutoMajor() << " fAutoMinor=" << record->isFAutoMinor() << " fAutoCross=" << record->isFAutoCross() << " fLog=" << record->isFLog() << " fReversed=" << record->isFReversed() << " fMaxCross=" << record->isFMaxCross() << std::endl; + DEBUG << "fAutoMin=" << record->isFAutoMin() << "fAutoMax=" << record->isFAutoMax() << "fAutoMajor=" << record->isFAutoMajor() + << "fAutoMinor=" << record->isFAutoMinor() << "fAutoCross=" << record->isFAutoCross() << "fLog=" << record->isFLog() + << "fReversed=" << record->isFReversed() << "fMaxCross=" << record->isFMaxCross(); if ( KoChart::Axis *axis = dynamic_cast< KoChart::Axis* > ( m_currentObj ) ) { axis->m_reversed = record->isFReversed(); axis->m_logarithmic = record->isFLog(); @@ -1310,30 +1315,30 @@ { if (!record) return; DEBUG << "tktMajor=" << record->tktMajor() - << " tktMinor=" << record->tktMinor() - << " tlt=" << record->tlt() << std::endl; + << "tktMinor=" << record->tktMinor() + << "tlt=" << record->tlt(); //TODO } void ChartSubStreamHandler::handleAxcExt(AxcExtRecord *record) { if (!record) return; DEBUG << "fAutoMin=" << record->isFAutoMin() - << " fAutoMax=" << record->isFAutoMax() - << " fAutoMajor=" << record->isFAutoMajor() - << " fAutoMinor=" << record->isFAutoMinor() - << " fDateAxis=" << record->isFDateAxis() - << " fAutoBase=" << record->isFAutoBase() - << " fAutoCross=" << record->isFAutoCross() - << " fAutoDate=" << record->isFAutoDate() << std::endl; + << "fAutoMax=" << record->isFAutoMax() + << "fAutoMajor=" << record->isFAutoMajor() + << "fAutoMinor=" << record->isFAutoMinor() + << "fDateAxis=" << record->isFDateAxis() + << "fAutoBase=" << record->isFAutoBase() + << "fAutoCross=" << record->isFAutoCross() + << "fAutoDate=" << record->isFAutoDate(); //TODO } // Specifies the presence of drop lines, high-low lines, series lines or leader lines on the chart group. This record is followed by a LineFormat record which specifies the format of the lines. void ChartSubStreamHandler::handleCrtLine(CrtLineRecord *record) { if (!record) return; - DEBUG << "identifier=" << record->identifier() << std::endl; + DEBUG << "identifier=" << record->identifier(); switch(record->identifier()) { case 0x0000: // Drop lines below the data points of line, area, and stock chart groups. //TODO @@ -1357,14 +1362,16 @@ void ChartSubStreamHandler::handleCatSerRange(CatSerRangeRecord *record) { if (!record) return; - DEBUG << "fBetween=" << record->isFBetween() << " fMaxCross=" << record->isFMaxCross() << " fReverse=" << record->isFReverse() << std::endl; + DEBUG << "fBetween=" << record->isFBetween() << "fMaxCross=" << record->isFMaxCross() << "fReverse=" << record->isFReverse(); //TODO } void ChartSubStreamHandler::handleAttachedLabel(AttachedLabelRecord *record) { if (!record) return; - DEBUG << "fShowValue=" << record->isFShowValue() << " fShowPercent=" << record->isFShowPercent() << " fShowLabelAndPerc=" << record->isFShowLabelAndPerc() << " fShowLabel=" << record->isFShowLabel() << " fShowBubbleSizes=" << record->isFShowBubbleSizes() << " fShowSeriesName=" << record->isFShowSeriesName() << std::endl; + DEBUG << "fShowValue=" << record->isFShowValue() << "fShowPercent=" << record->isFShowPercent() + << "fShowLabelAndPerc=" << record->isFShowLabelAndPerc() << "fShowLabel=" << record->isFShowLabel() + << "fShowBubbleSizes=" << record->isFShowBubbleSizes() << "fShowSeriesName=" << record->isFShowSeriesName(); if (m_currentSeries) { m_currentSeries->m_showDataLabelValues = record->isFShowValue(); m_currentSeries->m_showDataLabelPercent = record->isFShowPercent() || record->isFShowLabelAndPerc(); @@ -1376,22 +1383,25 @@ void ChartSubStreamHandler::handleDataLabelExtContents(DataLabelExtContentsRecord *record) { if (!record) return; - DEBUG << "rt=" << record->rt() << " grbitFrt=" << record->grbitFrt() << " fSerName=" << record->isFSerName() << " fCatName=" << record->isFCatName() << " fValue=" << record->isFValue() << " fPercent=" << record->isFPercent() << " fBubSize=" << record->isFBubSize() << std::endl; + DEBUG << "rt=" << record->rt() << "grbitFrt=" << record->grbitFrt() << "fSerName=" << record->isFSerName() + << "fCatName=" << record->isFCatName() << "fValue=" << record->isFValue() << "fPercent=" << record->isFPercent() + << "fBubSize=" << record->isFBubSize(); //TODO } void ChartSubStreamHandler::handleXF(XFRecord *record) { if (!record) return; - DEBUG << "formatIndex=" << record->formatIndex() << std::endl; + DEBUG << "formatIndex=" << record->formatIndex(); m_xfTable.push_back(*record); } // This record specifies a label on the category (3) axis for each series. void ChartSubStreamHandler::handleLabel(LabelRecord *record) { if (!record) return; - DEBUG << "row=" << record->row() << " column=" << record->column() << " xfIndex=" << record->xfIndex() << " label=" << record->label().toUtf8().constData() << std::endl; + DEBUG << "row=" << record->row() << "column=" << record->column() << "xfIndex=" << record->xfIndex() + << "label=" << record->label().toUtf8(); //TODO } @@ -1402,7 +1412,7 @@ //Q_ASSERT(record->ifmt() >= 0x00A4 && record->ifmt() <= 0x0188); const Format *f = globals()->convertedFormat(record->ifmt()); if (!f) return; - DEBUG << "ifmt=" << record->ifmt() << " valueFormat=" << qPrintable(f->valueFormat()) << std::endl; + DEBUG << "ifmt=" << record->ifmt() << "valueFormat=" << qPrintable(f->valueFormat()); // if (!f->valueFormat().isEmpty() && f->valueFormat() != "General") { // Q_ASSERT(false); // } @@ -1413,8 +1423,8 @@ { if (!record) return; std::stringstream out; - record->dump(out); - DEBUG << "xmlTkParent=" << QString::number(record->xmlTkParent(), 16) << " tokens=" << out.str() << std::endl; + record->dump(out); + DEBUG << "xmlTkParent=" << QString::number(record->xmlTkParent(), 16) << "tokens=" << QString::fromStdString(out.str()); //TODO } diff --git a/filters/sheets/excel/sidewinder/excel.cpp b/filters/sheets/excel/sidewinder/excel.cpp --- a/filters/sheets/excel/sidewinder/excel.cpp +++ b/filters/sheets/excel/sidewinder/excel.cpp @@ -1008,7 +1008,7 @@ /* FormulaDecoder decoder; m_formula = decoder.decodeNamedFormula(cce, data + size - cce, version()); - std::cout << ">>" << m_formula.ascii() << std::endl; + qCDebug(lcSidewinder) << ">>" << m_formula.ascii(); */ const unsigned char* startNamedParsedFormula = data + size - cce; unsigned ptg = readU8(startNamedParsedFormula); @@ -1019,7 +1019,8 @@ m_formula = t; } - std::cout << "NameRecord name=" << d->definedName << " iTab=" << d->sheetIndex << " fBuiltin=" << d->builtin << " formula=" << m_formula.id() << " (" << m_formula.idAsString() << ")" << std::endl; + qCDebug(lcSidewinder) << "NameRecord name=" << d->definedName << "iTab=" << d->sheetIndex + << "fBuiltin=" << d->builtin << "formula=" << m_formula.id() << "(" << m_formula.idAsString() << ")"; } void NameRecord::dump(std::ostream& /*out*/) const @@ -1234,7 +1235,7 @@ for (unsigned i = 0; i < count; ++i) { // check against size if (offset >= size) { - std::cerr << "Warning: reached end of SST record, but not all strings have been read!" << std::endl; + qCWarning(lcSidewinder) << "Warning: reached end of SST record, but not all strings have been read!"; break; } @@ -1248,7 +1249,7 @@ // sanity check, adjust to safer condition if (count > d->strings.size()) { - std::cerr << "Warning: mismatch number of string in SST record, expected " << count << ", got " << d->strings.size() << "!" << std::endl; + qCWarning(lcSidewinder) << "Warning: mismatch number of string in SST record, expected" << count << ", got" << d->strings.size() << "!"; } } @@ -1350,7 +1351,7 @@ const unsigned long ftcmo = readU16(startFtCmo); const unsigned long cbcmo = readU16(startFtCmo + 2); if (ftcmo != 0x15 || cbcmo != 0x12) { - std::cerr << "ObjRecord::setData: invalid ObjRecord" << std::endl; + qCWarning(lcSidewinder) << "ObjRecord::setData: invalid ObjRecord"; setIsValid(false); return; } @@ -1386,7 +1387,7 @@ const unsigned char* startPict = data + 22; switch (ot) { case Object::Group: // gmo - printf("ObjRecord::setData group\n"); + qCDebug(lcSidewinder) << "ObjRecord::setData group"; startPict += 6; break; case Object::Picture: { // pictFormat and pictFlags @@ -1406,7 +1407,7 @@ // unspecified format, neither enhanced metafile nor a bitmap break; default: - std::cerr << "ObjRecord::setData: invalid ObjRecord Picture" << std::endl; + qCWarning(lcSidewinder) << "ObjRecord::setData: invalid ObjRecord Picture"; setIsValid(false); delete m_object; m_object = 0; @@ -1434,42 +1435,42 @@ //const bool unused5 = opts2 & 0x3000; //const bool unused6 = opts2 & 0x6000; //const bool unused7 = opts2 & 0xC000; - std::cout << "ObjRecord::setData picture id=" << id << " fDde=" << fDde << " FCtl=" << fCtl << " fPrstm=" << fPrstm << std::endl; + qCDebug(lcSidewinder) << "ObjRecord::setData picture id=" << id << "fDde=" << fDde << "FCtl=" << fCtl << "fPrstm=" << fPrstm; startPict += 12; } break; case Object::Checkbox: // cbls - printf("ObjRecord::setData checkbox\n"); + qCDebug(lcSidewinder) << "ObjRecord::setData checkbox"; startPict += 16; break; case Object::RadioButton: // cbls and rbo - printf("ObjRecord::setData RadioButton\n"); + qCDebug(lcSidewinder) << "ObjRecord::setData RadioButton"; startPict += 26; break; case Object::SpinControl: // sbs - printf("ObjRecord::setData SpinControl\n"); + qCDebug(lcSidewinder) << "ObjRecord::setData SpinControl"; startPict += 24; break; case Object::Scrollbar: // sbs - printf("ObjRecord::setData Scrollbar\n"); + qCDebug(lcSidewinder) << "ObjRecord::setData Scrollbar"; startPict += 24; break; case Object::List: // sbs - printf("ObjRecord::setData List\n"); + qCDebug(lcSidewinder) << "ObjRecord::setData List"; startPict += 24; break; case Object::DropdownList: // sbs - printf("ObjRecord::setData DropdownList\n"); + qCDebug(lcSidewinder) << "ObjRecord::setData DropdownList"; startPict += 24; break; case Object::Note: { // nts - std::cout << "ObjRecord::setData note id=" << id << std::endl; + qCDebug(lcSidewinder) << "ObjRecord::setData note id=" << id; m_object = new NoteObject(id); const unsigned long ft = readU16(startPict); const unsigned long cb = readU16(startPict + 2); startPict += 20; // skip guid if (ft != 0x000D || cb != 0x0016) { - std::cerr << "ObjRecord::setData: invalid ObjRecord note with id=" << id << std::endl; + qCWarning(lcSidewinder) << "ObjRecord::setData: invalid ObjRecord note with id=" << id; setIsValid(false); delete m_object; m_object = 0; @@ -1485,24 +1486,24 @@ break; case Object::Chart: - std::cout << "ObjRecord::setData chart id=" << id << std::endl; + qCDebug(lcSidewinder) << "ObjRecord::setData chart id=" << id; m_object = new ChartObject(id); break; - case Object::Rectangle: printf("ObjRecord::setData Rectangle\n"); break; - case Object::Line: printf("ObjRecord::setData Line\n"); break; - case Object::Oval: printf("ObjRecord::setData Oval\n"); break; - case Object::Arc: printf("ObjRecord::setData Arc\n"); break; - case Object::Text: printf("ObjRecord::setData Text\n"); break; - case Object::Button: printf("ObjRecord::setData Button\n"); break; - case Object::Polygon: printf("ObjRecord::setData Polygon\n"); break; - case Object::EditBox: printf("ObjRecord::setData EditBox\n"); break; - case Object::Label: printf("ObjRecord::setData Label\n"); break; - case Object::DialogBox: printf("ObjRecord::setData DialogBox\n"); break; - case Object::GroupBox: printf("ObjRecord::setData GroupBox\n"); break; - case Object::OfficeArt: printf("ObjRecord::setData OfficeArt\n"); break; + case Object::Rectangle: qCDebug(lcSidewinder) << "ObjRecord::setData Rectangle"; break; + case Object::Line: qCDebug(lcSidewinder) << "ObjRecord::setData Line"; break; + case Object::Oval: qCDebug(lcSidewinder) << "ObjRecord::setData Oval"; break; + case Object::Arc: qCDebug(lcSidewinder) << "ObjRecord::setData Arc"; break; + case Object::Text: qCDebug(lcSidewinder) << "ObjRecord::setData Text"; break; + case Object::Button: qCDebug(lcSidewinder) << "ObjRecord::setData Button"; break; + case Object::Polygon: qCDebug(lcSidewinder) << "ObjRecord::setData Polygon"; break; + case Object::EditBox: qCDebug(lcSidewinder) << "ObjRecord::setData EditBox"; break; + case Object::Label: qCDebug(lcSidewinder) << "ObjRecord::setData Label"; break; + case Object::DialogBox: qCDebug(lcSidewinder) << "ObjRecord::setData DialogBox"; break; + case Object::GroupBox: qCDebug(lcSidewinder) << "ObjRecord::setData GroupBox"; break; + case Object::OfficeArt: qCDebug(lcSidewinder) << "ObjRecord::setData OfficeArt"; break; default: - std::cerr << "ObjRecord::setData: Unexpected objecttype " << ot << " in ObjRecord" << std::endl; + qCWarning(lcSidewinder) << "ObjRecord::setData: Unexpected objecttype" << ot << "in ObjRecord"; setIsValid(false); delete m_object; m_object = 0; @@ -1560,7 +1561,7 @@ ptg = ((ptg & 0x40) ? (ptg | 0x20) : ptg) & 0x3F; token = FormulaToken(ptg); token.setVersion(version()); - std::cout << "ObjRecord::setData: Picture is of type id=" << token.id() << " name=" << token.idAsString() << std::endl; + qCDebug(lcSidewinder) << "ObjRecord::setData: Picture is of type id=" << token.id() << "name=" << token.idAsString(); if (token.size() > 0) { token.setData(token.size(), startPict + cbFmlaSize); cbFmlaSize += token.size(); @@ -1583,7 +1584,7 @@ embedInfoSize += size; //TODO - std::cout << "ObjRecord::setData: className=" << qPrintable(className) << std::endl; + qCDebug(lcSidewinder) << "ObjRecord::setData: className=" << className; } } } @@ -1617,7 +1618,7 @@ } //fmlaLinkedCell //fmlaListFillRange - std::cout << "ObjRecord::setData: Runtime license key is: " << key.c_str() << std::endl; + qCDebug(lcSidewinder) << "ObjRecord::setData: Runtime license key is: " << key.c_str(); } } @@ -1788,7 +1789,7 @@ } } - std::cout << "TxORecord::setData size=" << size << " text=" << qPrintable(d->text) << std::endl; + qCDebug(lcSidewinder) << "TxORecord::setData size=" << size << " text=" << d->text; } const QString& TxORecord::text() const @@ -1863,19 +1864,19 @@ try { parseOfficeArtSpgrContainerFileBlock(in, container.groupShape->rgfb.last()); } catch(const IOException& e) { - std::cerr << "Invalid MsoDrawingRecord record: " << qPrintable(e.msg) << std::endl; + qCWarning(lcSidewinder) << "Invalid MsoDrawingRecord record:" << e.msg; setIsValid(false); return; } catch(...) { - std::cerr << "Invalid MsoDrawingRecord record: Unexpected error" << std::endl; + qCWarning(lcSidewinder) << "Invalid MsoDrawingRecord record: Unexpected error"; setIsValid(false); return; } } // Be sure we got at least something useful we can work with. if(!container.groupShape) { - std::cerr << "Invalid MsoDrawingRecord record: Expected groupShape missing in the container." << std::endl; + qCWarning(lcSidewinder) << "Invalid MsoDrawingRecord record: Expected groupShape missing in the container."; setIsValid(false); return; } @@ -1923,7 +1924,7 @@ void MsoDrawingGroupRecord::setData(unsigned size, const unsigned char* data, const unsigned* continuePositions) { - printf("MsoDrawingGroupRecord::setData size=%i data=%i continuePositions=%i\n",size,*data,*continuePositions); + qCDebug(lcSidewinder) << QString("MsoDrawingGroupRecord::setData size=%1 data=%2 continuePositions=%3").arg(size).arg(*data).arg(*continuePositions); if(size < 32) { setIsValid(false); return; @@ -1937,7 +1938,7 @@ try { MSO::parseOfficeArtDggContainer(lei, d->container); } catch (const IOException& e) { - std::cerr << "Invalid MsoDrawingGroup record:" << qPrintable(e.msg) << std::endl; + qCWarning(lcSidewinder) << "Invalid MsoDrawingGroup record:" << e.msg; setIsValid(false); return; } @@ -2114,7 +2115,7 @@ store->write((const char*)(data + curOffset), imageSize); store->close(); } else { - std::cerr << "BkHimRecord: Failed to open file=" << filename << std::endl; + qCWarning(lcSidewinder) << "BkHimRecord: Failed to open file=" << filename; } } @@ -2241,31 +2242,33 @@ RecordRegistry::registerRecordClass(BkHimRecord::id, createBkHimRecord); } -void printEntries(POLE::Storage &storage, const std::string path = "/", int level = 0) +#ifdef SWINDER_XLS2RAW +static void printEntries(POLE::Storage &storage, const std::string path = "/", int level = 0) { - std::cout << std::setw(level) << "PATH=" << path << std::endl; + qCDebug(lcSidewinder) << "PATH=" << QString::fromStdString(path); std::list entries = storage.entries(path); for (std::list::iterator it = entries.begin(); it != entries.end(); ++it) { - std::cout << std::setw(level + 1) << "ENTRY=" << *it << std::endl; + qCDebug(lcSidewinder) << "ENTRY=" << QString::fromStdString(*it); std::string p = path == "/" ? "/" + *it + "/" : path + "/" + *it + "/"; if (storage.isDirectory(p)) { printEntries(storage, p, level + 1); } } } +#endif bool ExcelReader::load(Workbook* workbook, const char* filename) { registerAllRecordClasses(); POLE::Storage storage(filename); if (!storage.open()) { - std::cerr << "Cannot open " << filename << std::endl; + qCWarning(lcSidewinder) << "Cannot open" << filename; return false; } #ifdef SWINDER_XLS2RAW - std::cout << "Streams:" << std::endl; + qCDebug(lcSidewinder) << "Streams:"; printEntries(storage); #endif @@ -2279,7 +2282,7 @@ } if (stream->fail()) { - std::cerr << filename << " is not Excel workbook" << std::endl; + qCWarning(lcSidewinder) << filename << "is not Excel workbook"; delete stream; return false; } @@ -2369,7 +2372,7 @@ workbook->setProperty(propertyId, s); } break; default: - std::cout << "Ignoring property with known id=" << propertyId << " and unknown type=" << type; + qCDebug(lcSidewinder) << "Ignoring property with known id=" << propertyId << "and unknown type=" << type; break; } break; @@ -2381,12 +2384,12 @@ if (newCodec) { codec = newCodec; } - std::cout << "Codepage:" << codepage << std::endl; + qCDebug(lcSidewinder) << "Codepage:" << codepage; } break; default: if (propertyId != 0x0013 /* GKPIDDSI_SHAREDDOC */) { - std::cout << "Ignoring property with unknown id=" << propertyId << " and type=" << type << std::endl; + qCDebug(lcSidewinder) << "Ignoring property with unknown id=" << propertyId << " and type=" << type; } break; } @@ -2417,7 +2420,7 @@ } if(hasCombObjStream) { QString ansiUserType = readByteString(buffer, length); - printf( "length=%lu ansiUserType=%s\n",length, qPrintable(ansiUserType) ); + qCDebug(lcSidewinder) << QString("length=%1 ansiUserType=%2").arg(length).arg(ansiUserType); // AnsiClipboardFormat bytes_read = combObjStream->read( buffer, 4 ); @@ -2439,7 +2442,7 @@ break; default: if (markerOrLength > 65535) { - printf("invalid length reading compobj stream: %lu\n", markerOrLength); + qCDebug(lcSidewinder) << "invalid length reading compobj stream:" << markerOrLength; } else { bytes_read = combObjStream->read( buffer, markerOrLength ); QString ansiString = readByteString(buffer, markerOrLength); @@ -2572,7 +2575,7 @@ // next read the data of the record bytes_read = stream->read(buffer + size, next_size); if (bytes_read != next_size) { - std::cout << "ERROR!" << std::endl; + qCDebug(lcSidewinder) << "ERROR!"; break; } d->globals->decryptionSkipBytes(4); @@ -2596,28 +2599,22 @@ if (!record) { //#ifdef SWINDER_XLS2RAW - std::cout << "Unhandled Record 0x"; - std::cout << std::setfill('0') << std::setw(4) << std::hex << type; - std::cout << std::dec; - std::cout << " (" << type << ")"; - std::cout << std::endl; + qCDebug(lcSidewinder) << "Unhandled Record" << QString("0x%1").arg(QString::number(type, 16)) + << "(" << type << ")"; //#endif } else { // setup the record and invoke handler record->setVersion(d->globals->version()); record->setData(size, buffer, continuePositions); record->setPosition(pos); #ifdef SWINDER_XLS2RAW - std::cout << std::setfill('0') << std::setw(8) << std::dec << record->position() << " "; - if (!record->isValid()) std::cout << "Invalid "; - std::cout << "Record 0x"; - std::cout << std::setfill('0') << std::setw(4) << std::hex << record->rtti(); - std::cout << " ("; - std::cout << std::dec; - std::cout << record->rtti() << ") "; - record->dump(std::cout); - std::cout << std::endl; + QString debug = QString("%1 ").arg(record->position(), 8, 10, QChar('0')); + if (!record->isValid()) debug.append("Invalid "); + debug.append(QString("Record 0x%1 (%2)").arg(record->rtti(), 4, 16, QChar('0')).arg(record->rtti())); + std::stringstream out; + record->dump(out); + qCDebug(lcSidewinder) << debug << QString::fromStdString(out.str()); #endif if (record->isValid()) { @@ -2705,7 +2702,7 @@ SubStreamHandler* parentHandler = d->handlerStack.empty() ? 0 : d->handlerStack.back(); d->handlerStack.push_back(new Swinder::ChartSubStreamHandler(d->globals, parentHandler)); } else { - std::cout << "ExcelReader::handleBOF Unhandled type=" << record->type() << std::endl; + qCDebug(lcSidewinder) << "ExcelReader::handleBOF Unhandled type=" << record->type(); } } diff --git a/filters/sheets/excel/sidewinder/formulas.cpp b/filters/sheets/excel/sidewinder/formulas.cpp --- a/filters/sheets/excel/sidewinder/formulas.cpp +++ b/filters/sheets/excel/sidewinder/formulas.cpp @@ -284,7 +284,7 @@ case 0: s = ""; break; // NOPE... default: s = "Unknown"; - printf("Unhandled formula id %i as string\n", d->id); + qCDebug(lcSidewinder) << QString("Unhandled formula id %1 as string").arg(d->id); break; } @@ -393,7 +393,7 @@ default: if (d->data.empty()) // WARNING this is unhandled case - printf("Unhandled formula token with id %i\n", d->id); + qCDebug(lcSidewinder) << "Unhandled formula token with id" << d->id; else s = d->data.size(); break; @@ -1210,7 +1210,7 @@ unsigned cce = readU16(buf); //printf( "SIZE=%i\n", cce ); if (cce < 7) { - printf("Error: Invalid size %i for formula areaMap of type %i\n", cce, type); + qCDebug(lcSidewinder) << QString("Error: Invalid size %1 for formula areaMap of type %2").arg(cce).arg(type); return QString(); } @@ -1400,7 +1400,7 @@ #warning TODO Implement FormulaToken::array() #endif - printf("Unhandled formula array-token with row=%i and column=%i\n", row, col); + qCDebug(lcSidewinder) << QString("Unhandled formula array-token with row=%1 and column=%2").arg(row).arg(col); /* unsigned char buf[2]; @@ -1478,7 +1478,7 @@ FormulaTokens tokens; const unsigned formula_len = readU16(data + pos); if (formula_len + pos + 2 > size) { - std::cerr << "formula is longer than available data" << std::endl; + qCWarning(lcSidewinder) << "formula is longer than available data"; return tokens; } for (unsigned j = pos + 2; j < size;) { @@ -1772,7 +1772,7 @@ } else { // "2.5.198.58 PtgExp" says that if its not a sharedFormula then it's an indication that the // result is an reference to cells. So, we can savly ignore that case... - std::cout << "MATRIX first=%i second=" << formulaCellPos.first << " " << formulaCellPos.second << std::endl; + qCDebug(lcSidewinder) << "MATRIX first=%i second=" << formulaCellPos.first << formulaCellPos.second; } break; } @@ -1784,7 +1784,7 @@ if(dt) stack.push_back(dataTableFormula(row, col, dt)); } else { - std::cout << "TABLE first=%i second=" << formulaCellPos.first << " " << formulaCellPos.second << std::endl; + qCDebug(lcSidewinder) << "TABLE first=%i second=" << formulaCellPos.first << formulaCellPos.second; } break; } @@ -1821,7 +1821,7 @@ case FormulaToken::MemNoMemN: default: // FIXME handle this ! - std::cout << "Unhandled token=" << token.idAsString() << std::endl; + qCDebug(lcSidewinder) << "Unhandled token=" << token.idAsString(); stack.push_back(QString("Unknown")); break; }; diff --git a/filters/sheets/excel/sidewinder/globalssubstreamhandler.cpp b/filters/sheets/excel/sidewinder/globalssubstreamhandler.cpp --- a/filters/sheets/excel/sidewinder/globalssubstreamhandler.cpp +++ b/filters/sheets/excel/sidewinder/globalssubstreamhandler.cpp @@ -205,15 +205,16 @@ { if (index < d->nameTable.size()) return d->nameTable[index]; - std::cerr << "Invalid index in GlobalsSubStreamHandler::nameFromIndex index=" << index << " size=" << d->externNameTable.size() << std::endl; + qCWarning(lcSidewinder) << "Invalid index in GlobalsSubStreamHandler::nameFromIndex index=" << index << "size=" << d->externNameTable.size(); return QString(); } QString GlobalsSubStreamHandler::externNameFromIndex(unsigned index) const { if (index < d->externNameTable.size()) return d->externNameTable[index]; - std::cerr << "Invalid index in GlobalsSubStreamHandler::externNameFromIndex index=" << index << " size=" << d->externNameTable.size() << std::endl; + qCWarning(lcSidewinder) << "Invalid index in GlobalsSubStreamHandler::externNameFromIndex index=" << index + << "size=" << d->externNameTable.size(); return QString(); } @@ -372,7 +373,7 @@ if (ifmt >= 164 && ifmt <= 392) { // custom format valueFormat = d->formatsTable[ifmt]; } else { - std::cout << "Unhandled format with index " << xf.formatIndex() << ". Using general format." << std::endl; + qCDebug(lcSidewinder) << "Unhandled format with index" << xf.formatIndex() << ". Using general format."; valueFormat = "General"; } } @@ -516,7 +517,7 @@ else if (type == 0xA) {} //EofRecord //else if (type == 0xEC) Q_ASSERT(false); // MsoDrawing else { - //std::cout << "Unhandled global record with type=" << type << " name=" << record->name() << std::endl; + //qCDebug(lcSidewinder) << "Unhandled global record with type=" << type << " name=" << record->name(); } } @@ -528,7 +529,7 @@ if (record->type() == BOFRecord::Workbook) { d->version = record->version(); } else { - std::cout << "GlobalsSubStreamHandler::handleBOF: Unhandled type=" << record->type() << std::endl; + qCDebug(lcSidewinder) << "GlobalsSubStreamHandler::handleBOF: Unhandled type=" << record->type(); } } @@ -554,7 +555,7 @@ d->bofMap[ bofPos ] = sheet; } break; default: - std::cout << "GlobalsSubStreamHandler::handleBoundSheet: Unhandled type=" << record->sheetType() << std::endl; + qCDebug(lcSidewinder) << "GlobalsSubStreamHandler::handleBoundSheet: Unhandled type=" << record->sheetType(); break; } } @@ -634,7 +635,7 @@ if (!d->decryption->checkPassword("VelvetSweatshop")) { delete d->decryption; d->decryption = 0; - fprintf(stderr, "Invalid password\n"); + qCWarning(lcSidewinder) << "Invalid password"; } else { d->decryption->setInitialPosition(record->position() + 54+4); } @@ -744,7 +745,7 @@ if (!record) return; if (record->isLocked()) { - std::cout << "TODO: The workbook is protected but protected workbooks is not supported yet!" << std::endl; + qCDebug(lcSidewinder) << "TODO: The workbook is protected but protected workbooks is not supported yet!"; } } @@ -757,19 +758,19 @@ { if (!record) return; if (!record->wPassword()) return; - std::cout << "GlobalsSubStreamHandler::handlePassword passwordHash=" << record->wPassword() << std::endl; + qCDebug(lcSidewinder) << "GlobalsSubStreamHandler::handlePassword passwordHash=" << record->wPassword(); d->workbook->setPassword(record->wPassword()); } void GlobalsSubStreamHandler::handleMsoDrawingGroup(MsoDrawingGroupRecord* record) { if (!record) return; - printf("GlobalsSubStreamHandler::handleMsoDrawingGroup\n"); + qCDebug(lcSidewinder) << "GlobalsSubStreamHandler::handleMsoDrawingGroup"; static int validMsoDrawingGroups = 0; // if this pass then multiple MsoDrawingGroupRecord can exist what we need to handle! if (validMsoDrawingGroups > 0) { - std::cerr << "Warning: multiple valid MsoDrawingGroupRecord exists : " << validMsoDrawingGroups << std::endl; + qCWarning(lcSidewinder) << "Warning: multiple valid MsoDrawingGroupRecord exists:" << validMsoDrawingGroups; } validMsoDrawingGroups++; diff --git a/filters/sheets/excel/sidewinder/objects.cpp b/filters/sheets/excel/sidewinder/objects.cpp --- a/filters/sheets/excel/sidewinder/objects.cpp +++ b/filters/sheets/excel/sidewinder/objects.cpp @@ -50,7 +50,12 @@ bool ok = false; foreach(const MSO::OfficeArtSpgrContainerFileBlock &b, container.groupShape->rgfb) { - std::cout << "Object(" << m_type << ") isOfficeArtSpContainer=" << b.anon.is() << " isOfficeArtSpgrContainer=" << b.anon.is() << " isOfficeArtFSP=" << b.anon.is() << " isOfficeArtFSPGR=" << b.anon.is() << " isOfficeArtClientAnchor=" << b.anon.is() << " isOfficeArtClientData=" << b.anon.is() << std::endl; + qCDebug(lcSidewinder) << "Object(" << m_type << ") isOfficeArtSpContainer=" << b.anon.is() + << "isOfficeArtSpgrContainer=" << b.anon.is() + << "isOfficeArtFSP=" << b.anon.is() + << "isOfficeArtFSPGR=" << b.anon.is() + << "isOfficeArtClientAnchor=" << b.anon.is() + << "isOfficeArtClientData=" << b.anon.is(); const MSO::OfficeArtSpContainer* spc = b.anon.get(); if(spc && spc->shapePrimaryOptions) { @@ -82,22 +87,26 @@ const MSO::OfficeArtSpgrContainer* spgr = b.anon.get(); if(spgr) { foreach(const MSO::OfficeArtSpgrContainerFileBlock &b, spgr->rgfb) { - std::cout << " spgr isOfficeArtSpContainer=" << b.anon.is() << " isOfficeArtSpgrContainer=" << b.anon.is() << " isOfficeArtFSP=" << b.anon.is() << " isOfficeArtFSPGR=" << b.anon.is() << " isOfficeArtClientAnchor=" << b.anon.is() << " isOfficeArtClientData=" << b.anon.is() << std::endl; + qCDebug(lcSidewinder) << " spgr isOfficeArtSpContainer=" << b.anon.is() + << "isOfficeArtSpgrContainer=" << b.anon.is() + << "isOfficeArtFSP=" << b.anon.is() + << "isOfficeArtFSPGR=" << b.anon.is() + << "isOfficeArtClientAnchor=" << b.anon.is() + << "isOfficeArtClientData=" << b.anon.is(); const MSO::OfficeArtSpContainer* spc2 = b.anon.get(); if(spc2) { - std::cout << " sp" - << " shapeGroup=" << (spc2->shapeGroup?1:0) - << " deletedshape=" << (spc2->deletedshape?1:0) - << " shapePrimaryOptions=" << (spc2->shapePrimaryOptions?1:0) - << " shapeSecondaryOptions1=" << (spc2->shapeSecondaryOptions1?1:0) - << " shapeTertiaryOptions1=" << (spc2->shapeTertiaryOptions1?1:0) - << " childAnchor=" << (spc2->childAnchor?1:0) - << " clientAnchor=" << (spc2->clientAnchor?1:0) - << " clientData=" << (spc2->clientData?1:0) - << " clientTextbox=" << (spc2->clientTextbox?1:0) - << " shapeSecondaryOptions2=" << (spc2->shapeSecondaryOptions2?1:0) - << " shapeTertiaryOptions2=" << (spc2->shapeTertiaryOptions2?1:0) - << std:: endl; + qCDebug(lcSidewinder) << " sp" + << "shapeGroup=" << (spc2->shapeGroup?1:0) + << "deletedshape=" << (spc2->deletedshape?1:0) + << "shapePrimaryOptions=" << (spc2->shapePrimaryOptions?1:0) + << "shapeSecondaryOptions1=" << (spc2->shapeSecondaryOptions1?1:0) + << "shapeTertiaryOptions1=" << (spc2->shapeTertiaryOptions1?1:0) + << "childAnchor=" << (spc2->childAnchor?1:0) + << "clientAnchor=" << (spc2->clientAnchor?1:0) + << "clientData=" << (spc2->clientData?1:0) + << "clientTextbox=" << (spc2->clientTextbox?1:0) + << "shapeSecondaryOptions2=" << (spc2->shapeSecondaryOptions2?1:0) + << "shapeTertiaryOptions2=" << (spc2->shapeTertiaryOptions2?1:0); } } } diff --git a/filters/sheets/excel/sidewinder/utils.h b/filters/sheets/excel/sidewinder/utils.h --- a/filters/sheets/excel/sidewinder/utils.h +++ b/filters/sheets/excel/sidewinder/utils.h @@ -28,6 +28,10 @@ #include #include #include +#include + +//"calligra.filter.sidewinder" +Q_DECLARE_LOGGING_CATEGORY(lcSidewinder) namespace Swinder { diff --git a/filters/sheets/excel/sidewinder/utils.cpp b/filters/sheets/excel/sidewinder/utils.cpp --- a/filters/sheets/excel/sidewinder/utils.cpp +++ b/filters/sheets/excel/sidewinder/utils.cpp @@ -24,6 +24,8 @@ #include "XlsRecordOutputStream.h" +Q_LOGGING_CATEGORY(lcSidewinder, "calligra.filter.sidewinder") + namespace Swinder { @@ -281,7 +283,7 @@ void Record::writeData(XlsRecordOutputStream &out) const { Q_UNUSED(out); - fprintf(stderr, "ERROR! writeData not implemented for record type %u\n", rtti()); + qCWarning(lcSidewinder) << "ERROR! writeData not implemented for record type" << rtti(); } void Record::dump(std::ostream&) const diff --git a/filters/sheets/excel/sidewinder/worksheetsubstreamhandler.cpp b/filters/sheets/excel/sidewinder/worksheetsubstreamhandler.cpp --- a/filters/sheets/excel/sidewinder/worksheetsubstreamhandler.cpp +++ b/filters/sheets/excel/sidewinder/worksheetsubstreamhandler.cpp @@ -243,7 +243,7 @@ else if (type == AutoFilterRecord::id) handleAutoFilterRecord(static_cast(record)); else { - //std::cout << "Unhandled worksheet record with type=" << type << " name=" << record->name() << std::endl; + //qCDebug(lcSidewinder) << "Unhandled worksheet record with type=" << type << " name=" << record->name(); } } @@ -254,7 +254,7 @@ if (record->type() == BOFRecord::Worksheet) { // ... } else { - std::cout << "WorksheetSubStreamHandler::handleBOF Unhandled type=" << record->type() << std::endl; + qCDebug(lcSidewinder) << "WorksheetSubStreamHandler::handleBOF Unhandled type=" << record->type(); } } @@ -751,7 +751,7 @@ { if (!record) return; if (!d->sheet) return; - std::cout << "WorksheetSubStreamHandler::handleNote column=" << record->column() << " row=" << record->row() << std::endl; + qCDebug(lcSidewinder) << "WorksheetSubStreamHandler::handleNote column=" << record->column() << "row=" << record->row(); Cell *cell = d->sheet->cell(record->column(), record->row()); if (cell) { const unsigned long id = record->idObj(); @@ -769,7 +769,7 @@ const unsigned long id = record->m_object ? record->m_object->id() : -1; - std::cout << "WorksheetSubStreamHandler::handleObj id=" << id << " type=" << (record->m_object ? record->m_object->type() : -1) << std::endl; + qCDebug(lcSidewinder) << "WorksheetSubStreamHandler::handleObj id=" << id << " type=" << (record->m_object ? record->m_object->type() : -1); d->lastOfficeArtObject = 0; @@ -896,7 +896,7 @@ if (!record) return; if (!d->sheet) return; if (!record->wPassword()) return; - std::cout << "WorksheetSubStreamHandler::handlePassword passwordHash=" << record->wPassword() << std::endl; + qCDebug(lcSidewinder) << "WorksheetSubStreamHandler::handlePassword passwordHash=" << record->wPassword(); d->sheet->setPassword(record->wPassword()); #if 0 @@ -945,7 +945,7 @@ sPasswd.prepend(QChar(nNewChar)); } - std::cout << ">>>> " << sPasswd.data() << std::endl; //0x218490a + qCDebug(lcSidewinder) << ">>>> " << sPasswd.data(); //0x218490a #endif } diff --git a/filters/sheets/excel/sidewinder/xmltk.h b/filters/sheets/excel/sidewinder/xmltk.h --- a/filters/sheets/excel/sidewinder/xmltk.h +++ b/filters/sheets/excel/sidewinder/xmltk.h @@ -23,6 +23,8 @@ #include #include +#include "utils.h" + namespace Swinder { @@ -221,7 +223,7 @@ case 0x07: return new XmlTkBlob(data); default: - std::cout << "Error in " << __FUNCTION__ << ": Unhandled drType " << qPrintable(QString::number(drType, 16)) << std::endl; + qCDebug(lcSidewinder) << "Error in " << __FUNCTION__ << ": Unhandled drType " << QString::number(drType, 16); break; } return 0;