├── .gitignore ├── CODE_OF_CONDUCT.md ├── Common ├── CommonTranslatorLib │ ├── AbstractOpenXmlMapping.cs │ ├── BinaryDocument.cs │ ├── IMapping.cs │ └── IVisitable.cs ├── OfficeDrawing │ ├── BitmapBlip.cs │ ├── BlipBooleanProperties.cs │ ├── BlipStoreContainer.cs │ ├── BlipStoreEntry.cs │ ├── ChildAnchor.cs │ ├── ClientAnchor.cs │ ├── ClientData.cs │ ├── ClientTextbox.cs │ ├── DiagramBooleans.cs │ ├── DrawingContainer.cs │ ├── DrawingGroup.cs │ ├── DrawingGroupRecord.cs │ ├── DrawingRecord.cs │ ├── Exceptions.cs │ ├── FillStyleBooleanProperties.cs │ ├── GeometryBooleans.cs │ ├── GeometryTextBooleanProperties.cs │ ├── GroupContainer.cs │ ├── GroupShapeBooleans.cs │ ├── GroupShapeRecord.cs │ ├── LineStyleBooleans.cs │ ├── MetafilePictBlip.cs │ ├── OfficeRecordAttribute.cs │ ├── OfficeShapeTypeAttribute.cs │ ├── PathParser.cs │ ├── PathSegment.cs │ ├── ProtectionBooleans.cs │ ├── Record.cs │ ├── RegularContainer.cs │ ├── ShadowStyleBooleanProperties.cs │ ├── Shape.cs │ ├── ShapeContainer.cs │ ├── ShapeOptions.cs │ ├── Shapetypes │ │ ├── AccentBorderCallout1Type.cs │ │ ├── AccentBorderCallout2Type.cs │ │ ├── AccentBorderCallout3Type.cs │ │ ├── AccentBorderCallout90Type.cs │ │ ├── AccentCallout1Type.cs │ │ ├── AccentCallout2Type.cs │ │ ├── AccentCallout3Type.cs │ │ ├── AccentCallout90Type.cs │ │ ├── ActionButtonBlank.cs │ │ ├── ArcType.cs │ │ ├── BentArrowType.cs │ │ ├── BentUpArrowType.cs │ │ ├── BevelType.cs │ │ ├── BlockArcType.cs │ │ ├── BorderCallout1Type.cs │ │ ├── BorderCallout2Type.cs │ │ ├── BorderCallout3Type.cs │ │ ├── BorderCallout90Type.cs │ │ ├── BracePairType.cs │ │ ├── BracketPairType.cs │ │ ├── Callout1Type.cs │ │ ├── Callout2Type.cs │ │ ├── Callout3Type.cs │ │ ├── Callout90Type.cs │ │ ├── CanType.cs │ │ ├── ChevronType.cs │ │ ├── CircularArrowType.cs │ │ ├── CloudCalloutType.cs │ │ ├── CubeType.cs │ │ ├── CurvedDownArrowType.cs │ │ ├── CurvedLeftArrowType.cs │ │ ├── CurvedRightArrowType.cs │ │ ├── CurvedUpArrowType.cs │ │ ├── DiamondType.cs │ │ ├── DonutType.cs │ │ ├── DoubleWaveType.cs │ │ ├── DownArrowCalloutType.cs │ │ ├── DownArrowType.cs │ │ ├── EllipseRibbonType.cs │ │ ├── EllipsedRibbon2Type.cs │ │ ├── FlowChartAlternateProcessType.cs │ │ ├── FlowChartCollateType.cs │ │ ├── FlowChartConnectorType.cs │ │ ├── FlowChartDecisionType.cs │ │ ├── FlowChartDelayType.cs │ │ ├── FlowChartDisplayType.cs │ │ ├── FlowChartDocumentType.cs │ │ ├── FlowChartExtractType.cs │ │ ├── FlowChartInputOutputType.cs │ │ ├── FlowChartInternalStorageType.cs │ │ ├── FlowChartMagneticDiskType.cs │ │ ├── FlowChartMagneticDrumType.cs │ │ ├── FlowChartMagneticTapeType.cs │ │ ├── FlowChartManualInputType.cs │ │ ├── FlowChartManualOperationType.cs │ │ ├── FlowChartMergeType.cs │ │ ├── FlowChartMultidocumentType.cs │ │ ├── FlowChartOffpageConnectorType.cs │ │ ├── FlowChartOnlineStorageType.cs │ │ ├── FlowChartOrType.cs │ │ ├── FlowChartPredefinedProcessType.cs │ │ ├── FlowChartPreparationType.cs │ │ ├── FlowChartProcessType.cs │ │ ├── FlowChartPunchedCardType.cs │ │ ├── FlowChartPunchedTapeType.cs │ │ ├── FlowChartSortType.cs │ │ ├── FlowChartSummingJunctionType.cs │ │ ├── FlowChartTerminatorType.cs │ │ ├── FoldedCornerType.cs │ │ ├── HeartType.cs │ │ ├── HexagonType.cs │ │ ├── HomePlateType.cs │ │ ├── HorizontalScrollType.cs │ │ ├── IrregularSealOneType.cs │ │ ├── IrregularSealTwo.cs │ │ ├── IsoscelesTriangleType.cs │ │ ├── LeftArrowCalloutType.cs │ │ ├── LeftArrowType.cs │ │ ├── LeftBraceType.cs │ │ ├── LeftBracketType.cs │ │ ├── LeftRightArrowCalloutType.cs │ │ ├── LeftRightArrowType.cs │ │ ├── LeftRightUpArrow.cs │ │ ├── LeftUpArrowType.cs │ │ ├── LightningBoltType.cs │ │ ├── LineType.cs │ │ ├── MoonType.cs │ │ ├── NoSmokingType.cs │ │ ├── NotchedRightArrowType.cs │ │ ├── OctagonType.cs │ │ ├── OvalType.cs │ │ ├── ParallelogramType.cs │ │ ├── PentagonType.cs │ │ ├── PictureFrameType.cs │ │ ├── PlaqueType.cs │ │ ├── PlusType.cs │ │ ├── QuadArrowCalloutType.cs │ │ ├── QuadArrowType.cs │ │ ├── RectangleType.cs │ │ ├── RibbonDownType.cs │ │ ├── RibbonUpType.cs │ │ ├── RightArrowCalloutType.cs │ │ ├── RightArrowType.cs │ │ ├── RightBracetype.cs │ │ ├── RightBracketType.cs │ │ ├── RightTriangleType.cs │ │ ├── RoundedRectangleType.cs │ │ ├── Seal16Type.cs │ │ ├── Seal24Type.cs │ │ ├── Seal32Type.cs │ │ ├── Seal4Type.cs │ │ ├── Seal8Type.cs │ │ ├── ShapeType.cs │ │ ├── SmileyFaceType.cs │ │ ├── Startype.cs │ │ ├── StraightConnectorType.cs │ │ ├── StripedRightArrowType.cs │ │ ├── SunType.cs │ │ ├── TextArchUpCurve.cs │ │ ├── TextArchUpPour.cs │ │ ├── TextCanDown.cs │ │ ├── TextCascadeUp.cs │ │ ├── TextCirclePour.cs │ │ ├── TextCurveDown.cs │ │ ├── TextCurveUp.cs │ │ ├── TextDeflate.cs │ │ ├── TextDeflateBottom.cs │ │ ├── TextDeflateInflate.cs │ │ ├── TextFadeUp.cs │ │ ├── TextPlainText.cs │ │ ├── TextRingInside.cs │ │ ├── TextSlantUp.cs │ │ ├── TextStop.cs │ │ ├── TextTriangle.cs │ │ ├── TextWave1.cs │ │ ├── TextWave3.cs │ │ ├── TextWave4.cs │ │ ├── TextboxType.cs │ │ ├── TrapezoidType.cs │ │ ├── UpArrowCalloutType.cs │ │ ├── UpArrowType.cs │ │ ├── UpDownArrowCalloutType.cs │ │ ├── UpDownArrowType.cs │ │ ├── UturnArrowType.cs │ │ ├── VerticalScrollType.cs │ │ ├── WaveType.cs │ │ ├── WedgeEllipseCalloutType.cs │ │ ├── WedgeRectCalloutType.cs │ │ └── WedgeRoundedRectCalloutType.cs │ ├── SolverContainer.cs │ ├── TextBooleanProperties.cs │ ├── ThreeDObjectBooleanProperties.cs │ ├── ThreeDStyleBooleanProperties.cs │ ├── UnknownRecord.cs │ ├── XmlContainer.cs │ ├── XmlRecord.cs │ └── XmlStringAtom.cs ├── OfficeGraph │ ├── BiffRecords │ │ ├── AlRuns.cs │ │ ├── Area.cs │ │ ├── AreaFormat.cs │ │ ├── AttachedLabel.cs │ │ ├── AxcExt.cs │ │ ├── AxesUsed.cs │ │ ├── Axis.cs │ │ ├── AxisLine.cs │ │ ├── AxisParent.cs │ │ ├── BOF.cs │ │ ├── BOFDatasheet.cs │ │ ├── BRAI.cs │ │ ├── Bar.cs │ │ ├── Begin.cs │ │ ├── BopPop.cs │ │ ├── BopPopCustom.cs │ │ ├── CatLab.cs │ │ ├── CatSerRange.cs │ │ ├── Chart.cs │ │ ├── Chart3D.cs │ │ ├── Chart3DBarShape.cs │ │ ├── ChartColors.cs │ │ ├── ChartFormat.cs │ │ ├── ChartFrtInfo.cs │ │ ├── ClrtClient.cs │ │ ├── CodePage.cs │ │ ├── ColumnWidth.cs │ │ ├── Continue.cs │ │ ├── Country.cs │ │ ├── CrtLine.cs │ │ ├── CrtLink.cs │ │ ├── Dat.cs │ │ ├── DataFormat.cs │ │ ├── DataLabExt.cs │ │ ├── DataLabExtContents.cs │ │ ├── Date1904.cs │ │ ├── DefaultText.cs │ │ ├── Dimensions.cs │ │ ├── DropBar.cs │ │ ├── EOF.cs │ │ ├── End.cs │ │ ├── EndBlock.cs │ │ ├── EndObject.cs │ │ ├── ExcludeColumns.cs │ │ ├── ExcludeRows.cs │ │ ├── Fbi.cs │ │ ├── Fbi2.cs │ │ ├── Font.cs │ │ ├── FontX.cs │ │ ├── Format.cs │ │ ├── Frame.cs │ │ ├── FrtFontList.cs │ │ ├── GelFrame.cs │ │ ├── IFmtRecord.cs │ │ ├── Label.cs │ │ ├── Legend.cs │ │ ├── LegendException.cs │ │ ├── Line.cs │ │ ├── LineFormat.cs │ │ ├── LinkedSelection.cs │ │ ├── MainWindow.cs │ │ ├── MarkerFormat.cs │ │ ├── MaxStatus.cs │ │ ├── Number.cs │ │ ├── ObjectLink.cs │ │ ├── Orient.cs │ │ ├── Palette.cs │ │ ├── PicF.cs │ │ ├── Pie.cs │ │ ├── PieFormat.cs │ │ ├── PlotArea.cs │ │ ├── PlotGrowth.cs │ │ ├── Pos.cs │ │ ├── Radar.cs │ │ ├── RadarArea.cs │ │ ├── Scatter.cs │ │ ├── Scl.cs │ │ ├── Selection.cs │ │ ├── SerAuxErrBar.cs │ │ ├── SerAuxTrend.cs │ │ ├── SerFmt.cs │ │ ├── SerParent.cs │ │ ├── SerToCrt.cs │ │ ├── Series.cs │ │ ├── SeriesList.cs │ │ ├── SeriesText.cs │ │ ├── ShtProps.cs │ │ ├── StartBlock.cs │ │ ├── StartObject.cs │ │ ├── Surf.cs │ │ ├── Text.cs │ │ ├── Tick.cs │ │ ├── TxO.cs │ │ ├── Units.cs │ │ ├── UnknownGraphRecord.cs │ │ ├── ValueRange.cs │ │ ├── WinDoc.cs │ │ ├── Window1.cs │ │ ├── Window1_10.cs │ │ ├── Window2Graph.cs │ │ └── YMult.cs │ ├── OfficeGraphBiffRecord.cs │ ├── OfficeGraphBiffRecordAttribute.cs │ ├── RecordNumbers.cs │ └── Structures │ │ ├── Enums.cs │ │ ├── FixedPointNumber.cs │ │ ├── FontInfo.cs │ │ ├── FormatRun.cs │ │ ├── FrtHeader.cs │ │ ├── FrtHeaderOld.cs │ │ ├── ShortXLUnicodeString.cs │ │ ├── XLUnicodeString.cs │ │ ├── XLUnicodeStringMin2.cs │ │ └── XLUnicodeStringNoCch.cs ├── OlePropertySet │ ├── PropertySet.cs │ └── ValueProperty.cs ├── OpenXmlLib │ ├── AppPropertiesPart.cs │ ├── ClassDiagramOpenXmlLib.cd │ ├── ContentPart.cs │ ├── ContentTypes.cs │ ├── CorePropertiesPart.cs │ ├── CustomXmlPart.cs │ ├── CustomXmlPropertiesPart.cs │ ├── DrawingML │ │ ├── ChartPart.cs │ │ ├── DrawingML.cs │ │ └── DrawingsPart.cs │ ├── EmbeddedObjectPart.cs │ ├── ExternalRelationship.cs │ ├── IZipReader.cs │ ├── ImagePart.cs │ ├── OpenXmlPackage.cs │ ├── OpenXmlPart.cs │ ├── OpenXmlPartContainer.cs │ ├── OpenXmlWriter.cs │ ├── PresentationML │ │ ├── HandoutMasterPart.cs │ │ ├── NotePart.cs │ │ ├── NotesMasterPart.cs │ │ ├── PresentationDocument.cs │ │ ├── PresentationPart.cs │ │ ├── SlideLayoutPart.cs │ │ ├── SlideMasterPart.cs │ │ └── SlidePart.cs │ ├── SpreadsheetML │ │ ├── ChartsheetPart.cs │ │ ├── ExternalLinkPart.cs │ │ ├── SharedStringPart.cs │ │ ├── SpreadsheetDocument.cs │ │ ├── SpreadsheetML.cs │ │ ├── StylesPart.cs │ │ ├── WorkbookPart.cs │ │ └── WorksheetPart.cs │ ├── ThemePart.cs │ ├── VbaDataPart.cs │ ├── VbaProjectPart.cs │ ├── ViewPropertiesPart.cs │ ├── VmlPart.cs │ ├── WordprocessingML │ │ ├── CommentsPart.cs │ │ ├── EndnotesPart.cs │ │ ├── FontTablePart.cs │ │ ├── FooterPart.cs │ │ ├── FootnotesPart.cs │ │ ├── GlossaryPart.cs │ │ ├── HeaderPart.cs │ │ ├── KeyMapCustomizationsPart.cs │ │ ├── MainDocumentPart.cs │ │ ├── NumberingDefinitionsPart.cs │ │ ├── SettingsPart.cs │ │ ├── StyleDefinitionsPart.cs │ │ ├── ToolbarsPart.cs │ │ └── WordprocessingDocument.cs │ └── ZipFactory.cs ├── Shell │ ├── CommandLineTranslator.cs │ └── ProcessingFile.cs ├── StructuredStorage │ ├── Common │ │ ├── AbstractDirectoryEntry.cs │ │ ├── AbstractHeader.cs │ │ ├── AbstractIOHandler.cs │ │ ├── Exceptions.cs │ │ ├── GlobalDefines.cs │ │ ├── InternalBitConverter.cs │ │ └── MaskingHandler.cs │ ├── Reader │ │ ├── AbstractFat.cs │ │ ├── DirectoryEntry.cs │ │ ├── DirectoryTree.cs │ │ ├── Fat.cs │ │ ├── Header.cs │ │ ├── IStreamReader.cs │ │ ├── IStructuredStorageReader.cs │ │ ├── InputHandler.cs │ │ ├── MiniFat.cs │ │ ├── StructuredStorageReader.cs │ │ ├── VirtualStream.cs │ │ └── VirtualStreamReader.cs │ └── Writer │ │ ├── AbstractFat.cs │ │ ├── BaseDirectoryEntry.cs │ │ ├── EmptyDirectoryEntry.cs │ │ ├── Fat.cs │ │ ├── Header.cs │ │ ├── MiniFat.cs │ │ ├── OutputHandler.cs │ │ ├── RootDirectoryEntry.cs │ │ ├── StorageDirectoryEntry.cs │ │ ├── StreamDirectoryEntry.cs │ │ ├── StructuredStorageContext.cs │ │ ├── StructuredStorageWriter.cs │ │ └── VirtualStream.cs ├── Tools │ ├── EmuValue.cs │ ├── FixedPointNumber.cs │ ├── PtValue.cs │ ├── RGBColor.cs │ ├── TraceLogger.cs │ ├── TwipsValue.cs │ └── Utils.cs └── b2xtranslator.csproj ├── Doc ├── DocFileFormat │ ├── AnnotationOwnerList.cs │ ├── AnnotationReferenceDescriptor.cs │ ├── AnnotationReferenceDescriptorExtra.cs │ ├── AnnotationReferenceExtraTable.cs │ ├── AuthorTable.cs │ ├── AutoNumberLevelDescriptor.cs │ ├── AutoNumberedListDataDescriptor.cs │ ├── AutoSummaryInfo.cs │ ├── BookmarkFirst.cs │ ├── BorderCode.cs │ ├── BreakDescriptor.cs │ ├── ByteParseException.cs │ ├── ByteStructure.cs │ ├── CharacterProperties.cs │ ├── CharacterPropertyExceptions.cs │ ├── CharacterRange.cs │ ├── CommandIdentifier.cs │ ├── CommandTable.cs │ ├── CustomToolbar.cs │ ├── CustomToolbarWrapper.cs │ ├── DateAndTime.cs │ ├── DocumentProperties.cs │ ├── DocumentTypographyInfo.cs │ ├── DrawingObjectGrid.cs │ ├── DropCapSpecifier.cs │ ├── FileInformationBlock.cs │ ├── FileShapeAddress.cs │ ├── FontFamilyName.cs │ ├── FormFieldData.cs │ ├── FormattedDiskPage.cs │ ├── FormattedDiskPageCHPX.cs │ ├── FormattedDiskPagePAPX.cs │ ├── Global.cs │ ├── HeaderAndFooterTable.cs │ ├── InvalidFileException.cs │ ├── KeyMapEntry.cs │ ├── LanguageId.cs │ ├── LineSpacingDescriptor.cs │ ├── ListData.cs │ ├── ListFormatOverride.cs │ ├── ListFormatOverrideLevel.cs │ ├── ListFormatOverrideTable.cs │ ├── ListLevel.cs │ ├── ListTable.cs │ ├── MacroData.cs │ ├── NilPicfAndBinData.cs │ ├── NumberRevisionMarkData.cs │ ├── OfficeArtContent.cs │ ├── OfficeDrawingTable.cs │ ├── OleObject.cs │ ├── OutlineLiSTData.cs │ ├── ParagraphHeight.cs │ ├── ParagraphPropertyExceptions.cs │ ├── PictureBulletInformation.cs │ ├── PictureDescriptor.cs │ ├── PieceDescriptor.cs │ ├── PieceTable.cs │ ├── Plex.cs │ ├── PropertyExceptions.cs │ ├── SectionDescriptor.cs │ ├── SectionPropertyExceptions.cs │ ├── ShadingDescriptor.cs │ ├── SinglePropertyModifier.cs │ ├── SprmTDefTable.cs │ ├── StringTable.cs │ ├── StwStructure.cs │ ├── StyleSheet.cs │ ├── StyleSheetDescription.cs │ ├── StyleSheetInformation.cs │ ├── TabDescriptor.cs │ ├── TablePropertyExceptions.cs │ ├── TextMark.cs │ ├── ToolbarControl.cs │ ├── ToolbarControlBitmap.cs │ ├── ToolbarCustomization.cs │ ├── ToolbarDelta.cs │ └── WordDocument.cs ├── WordprocessingMLMapping │ ├── ApplicationPropertiesMapping.cs │ ├── CharacterPropertiesMapping.cs │ ├── CommandTableMapping.cs │ ├── CommentsMapping.cs │ ├── ConversionContext.cs │ ├── Converter.cs │ ├── DateMapping.cs │ ├── DocumentMapping.cs │ ├── EndnotesMapping.cs │ ├── Field.cs │ ├── FontTableMapping.cs │ ├── FooterMapping.cs │ ├── FootnotesMapping.cs │ ├── FormFieldDataMapping.cs │ ├── GlossaryMapping.cs │ ├── HeaderMapping.cs │ ├── LanguageIdMapping.cs │ ├── MacroBinaryMapping.cs │ ├── MacroDataMapping.cs │ ├── MainDocumentMapping.cs │ ├── MappingException.cs │ ├── NumberingMapping.cs │ ├── OleObjectMapping.cs │ ├── ParagraphPropertiesMapping.cs │ ├── PropertiesMapping.cs │ ├── RevisionData.cs │ ├── SectionPropertiesMapping.cs │ ├── SettingsMapping.cs │ ├── StyleSheetMapping.cs │ ├── TableCellPropertiesMapping.cs │ ├── TableInfo.cs │ ├── TablePropertiesMapping.cs │ ├── TableRowPropertiesMapping.cs │ ├── TextboxMapping.cs │ ├── VMLPictureMapping.cs │ ├── VMLShapeMapping.cs │ └── VMLShapeTypeMapping.cs └── b2xtranslator.doc.csproj ├── LICENSE ├── Ppt ├── PptFileFormat │ ├── AnimationInfoContainer.cs │ ├── BlipCollection9Container.cs │ ├── CStringAtom.cs │ ├── CharacterRun.cs │ ├── ColorMappingAtom.cs │ ├── ColorSchemeAtom.cs │ ├── CurrentUserAtom.cs │ ├── DefaultRulerAtom.cs │ ├── DocumentAtom.cs │ ├── DocumentContainer.cs │ ├── EndDocument.cs │ ├── Environment.cs │ ├── ExHyperlinkContainer.cs │ ├── ExObjListContainer.cs │ ├── Exceptions.cs │ ├── FontCollection.cs │ ├── FontEntityAtom.cs │ ├── FooterMCAtom.cs │ ├── GPointAtom.cs │ ├── GRatioAtom.cs │ ├── GrColorAtom.cs │ ├── Handout.cs │ ├── ITextDataRecord.cs │ ├── List.cs │ ├── MainMaster.cs │ ├── MasterTextPropAtom.cs │ ├── MouseClickInteractiveInfoContainer.cs │ ├── NormalViewSetInfoContainer.cs │ ├── Note.cs │ ├── NotesAtom.cs │ ├── OEPlaceholderAtom.cs │ ├── OriginalMainMasterId.cs │ ├── OutlineTextProps9Container.cs │ ├── OutlineTextRefAtom.cs │ ├── PPDrawing.cs │ ├── PPDrawingGroup.cs │ ├── ParagraphRun.cs │ ├── PersistDirectoryAtom.cs │ ├── PersistDirectoryEntry.cs │ ├── Pictures.cs │ ├── PowerpointDocument.cs │ ├── ProgBinaryTag.cs │ ├── ProgBinaryTagDataBlob.cs │ ├── ProgTags.cs │ ├── RoundTripCompositeMasterId12Atom.cs │ ├── RoundTripContentMasterId12.cs │ ├── RoundTripContentMasterInfo12.cs │ ├── RoundTripOArtTextStyles12.cs │ ├── RoundTripShapeId12.cs │ ├── SSlideLayoutAtom.cs │ ├── Slide.cs │ ├── SlideAtom.cs │ ├── SlideHeadersFootersContainer.cs │ ├── SlideListWithText.cs │ ├── SlidePersistAtom.cs │ ├── SlideShowSlideInfoAtom.cs │ ├── TextAtom.cs │ ├── TextBytesAtom.cs │ ├── TextCFExceptionAtom.cs │ ├── TextCharsAtom.cs │ ├── TextHeaderAtom.cs │ ├── TextMasterStyle9Atom.cs │ ├── TextMasterStyleAtom.cs │ ├── TextPFExceptionAtom.cs │ ├── TextRulerAtom.cs │ ├── TextRunStyleAtom.cs │ ├── TextSpecialInfoAtom.cs │ ├── TextStyleAtom.cs │ ├── Theme.cs │ ├── UserEditAtom.cs │ ├── VBAInfoContainer.cs │ ├── VbaInfoAtom.cs │ └── VbaProjectAtom.cs ├── PresentationMLMapping │ ├── AnimationMapping.cs │ ├── AppMapping.cs │ ├── CharacterRunPropsMapping.cs │ ├── ColorSchemeMapping.cs │ ├── ConversionContext.cs │ ├── Converter.cs │ ├── CoreMapping.cs │ ├── Defaults │ │ ├── clrMap.xml │ │ ├── slideLayouts │ │ │ ├── blank.xml │ │ │ ├── chart.xml │ │ │ ├── chartAndTx.xml │ │ │ ├── clipArtAndTx.xml │ │ │ ├── dgm.xml │ │ │ ├── fourObj.xml │ │ │ ├── mediaAndTx.xml │ │ │ ├── obj.xml │ │ │ ├── objAndTwoObj.xml │ │ │ ├── objAndTx.xml │ │ │ ├── objOnly.xml │ │ │ ├── objOverTx.xml │ │ │ ├── objTx.xml │ │ │ ├── picTx.xml │ │ │ ├── secHead.xml │ │ │ ├── tbl.xml │ │ │ ├── title.xml │ │ │ ├── titleOnly.xml │ │ │ ├── twoObj.xml │ │ │ ├── twoObjAndObj.xml │ │ │ ├── twoObjAndTx.xml │ │ │ ├── twoObjOverTx.xml │ │ │ ├── twoTxTwoObj.xml │ │ │ ├── txAndChart.xml │ │ │ ├── txAndClipArt.xml │ │ │ ├── txAndMedia.xml │ │ │ ├── txAndObj.xml │ │ │ ├── txAndTwoObj.xml │ │ │ ├── txOverObj.xml │ │ │ ├── vertTitleAndTx.xml │ │ │ └── vertTx.xml │ │ ├── theme.xml │ │ └── txStyles.xml │ ├── FillMapping.cs │ ├── HandoutMasterMapping.cs │ ├── MasterMapping.cs │ ├── NoteMapping.cs │ ├── NotesMasterMapping.cs │ ├── PresentationMapping.cs │ ├── PresentationPartMapping.cs │ ├── ShadowMapping.cs │ ├── ShapeTreeMapping.cs │ ├── SlideMapping.cs │ ├── SlideTransitionMapping.cs │ ├── TextMapping.cs │ ├── TextMasterStyleMapping.cs │ ├── TitleMasterMapping.cs │ ├── Utils.cs │ ├── VMLPictureMapping.cs │ ├── VMLShapeTypeMapping.cs │ ├── VbaProjectMapping.cs │ └── viewPropsMapping.cs └── b2xtranslator.ppt.csproj ├── README.md ├── Shell ├── doc2x │ ├── Program.cs │ ├── doc2x.csproj │ └── doc2x.ico ├── ppt2x │ ├── Program.cs │ ├── ppt2x.csproj │ └── ppt2x.ico └── xls2x │ ├── Program.cs │ └── xls2x.csproj ├── UnitTests ├── CompoundFileExtract.cs ├── CompoundFileReadWriteExtract.cs ├── Config.xml ├── DocFileFormat.cs ├── DocOpenFile.cs ├── Microsoft.Office.Interop.Word.dll ├── OpenXmlLib.cs ├── PptDump.cs ├── UnitTests.csproj └── files │ ├── simple.doc │ ├── simple.docx │ └── simple.xls ├── Xls ├── SpreadsheetMLMapping │ ├── ChartMapping │ │ ├── AbstractAxisMapping.cs │ │ ├── AbstractChartGroupMapping.cs │ │ ├── AbstractChartMapping.cs │ │ ├── AreaChartMapping.cs │ │ ├── AreaFormatMapping.cs │ │ ├── AxisMapping.cs │ │ ├── BarChartMapping.cs │ │ ├── BubbleChartMapping.cs │ │ ├── CatMapping.cs │ │ ├── ChartContext.cs │ │ ├── ChartspaceMapping.cs │ │ ├── DataLabelMapping.cs │ │ ├── DataPointMapping.cs │ │ ├── LayoutMapping.cs │ │ ├── LegendMapping.cs │ │ ├── LineChartMapping.cs │ │ ├── LineFormatMapping.cs │ │ ├── OfPieChartMapping.cs │ │ ├── PieChartMapping.cs │ │ ├── PlotAreaMapping.cs │ │ ├── RadarChartMapping.cs │ │ ├── ScatterChartMapping.cs │ │ ├── SeriesMapping.cs │ │ ├── ShapePropertiesMapping.cs │ │ ├── SurfaceChartMapping.cs │ │ ├── TitleMapping.cs │ │ └── ValMapping.cs │ ├── ChartsheetMapping.cs │ ├── Converter.cs │ ├── DrawingMapping.cs │ ├── ExcelContext.cs │ ├── ExcelMapping.cs │ ├── ExternalLinkMapping.cs │ ├── FormulaMapping.cs │ ├── MacroBinaryMapping.cs │ ├── PageSetupMapping.cs │ ├── SSTMapping.cs │ ├── StyleMappingHelper.cs │ ├── StylesMapping.cs │ ├── TextBodyMapping.cs │ ├── WindowMapping.cs │ ├── WorkbookMapping.cs │ └── WorksheetMapping.cs ├── XlsFileFormat │ ├── BiffRecord.cs │ ├── BiffRecordAttribute.cs │ ├── BiffString.cs │ ├── ChartAxisIdGenerator.cs │ ├── ChartFormatIdGenerator.cs │ ├── ChartSequences │ │ ├── AiSequence.cs │ │ ├── AttachedLabelSequence.cs │ │ ├── AutoFilterSequence.cs │ │ ├── AxesSequence.cs │ │ ├── AxisParentSequence.cs │ │ ├── AxmSequence.cs │ │ ├── AxsSequence.cs │ │ ├── BackgroundSequence.cs │ │ ├── ChartFormatsSequence.cs │ │ ├── ChartSheetContentSequence.cs │ │ ├── ChartSheetSequence.cs │ │ ├── CrtMlfrtSequence.cs │ │ ├── CrtSequence.cs │ │ ├── CustomViewSequence.cs │ │ ├── DatSequence.cs │ │ ├── DataSheetSequence.cs │ │ ├── DftTextSequence.cs │ │ ├── DropBarSequence.cs │ │ ├── DvAxisSequence.cs │ │ ├── FontListSequence.cs │ │ ├── FrameSequence.cs │ │ ├── GelFrameSequence.cs │ │ ├── IvAxisSequence.cs │ │ ├── LdSequence.cs │ │ ├── ObjSequence.cs │ │ ├── ObjectsSequence.cs │ │ ├── OfficeGraphBiffRecordSequence.cs │ │ ├── PageSetupSequence.cs │ │ ├── PicfSequence.cs │ │ ├── ProtectionSequence.cs │ │ ├── SeriesAxisSequence.cs │ │ ├── SeriesDataSequence.cs │ │ ├── SeriesFormatSequence.cs │ │ ├── ShapePropsSequence.cs │ │ ├── SortData12Sequence.cs │ │ ├── SsSequence.cs │ │ ├── TextObjectSequence.cs │ │ ├── TextPropsSequence.cs │ │ └── WindowSequence.cs │ ├── DataContainer │ │ ├── AbstractCellData.cs │ │ ├── BlankCell.cs │ │ ├── CRNData.cs │ │ ├── ChartSheetData.cs │ │ ├── ColumnInfoData.cs │ │ ├── ExternSheetData.cs │ │ ├── FormulaCell.cs │ │ ├── HyperlinkData.cs │ │ ├── MergeCellData.cs │ │ ├── NumberCell.cs │ │ ├── RowData.cs │ │ ├── SSTData.cs │ │ ├── SharedFormulaData.cs │ │ ├── SheetData.cs │ │ ├── StringCell.cs │ │ ├── StringFormatAssignment.cs │ │ ├── SupBookData.cs │ │ ├── WorkBookData.cs │ │ ├── WorkSheetData.cs │ │ ├── XCTData.cs │ │ └── XTIData.cs │ ├── DataExtraction │ │ ├── Extractor.cs │ │ ├── FileInformationExtractor.cs │ │ ├── ParseException.cs │ │ ├── StreamExtractor.cs │ │ ├── WorkbookExtractor.cs │ │ └── WorksheetExtractor.cs │ ├── ExcelHelperClass.cs │ ├── Exception │ │ ├── ExtractorException.cs │ │ └── RecordParseException.cs │ ├── Ptg │ │ ├── AbstractPtg.cs │ │ ├── FtabValues.cs │ │ ├── PtgAdd.cs │ │ ├── PtgArea.cs │ │ ├── PtgArea3d.cs │ │ ├── PtgAreaErr.cs │ │ ├── PtgAreaErr3d.cs │ │ ├── PtgAreaN.cs │ │ ├── PtgAttrChoose.cs │ │ ├── PtgAttrGoto.cs │ │ ├── PtgAttrIf.cs │ │ ├── PtgAttrSemi.cs │ │ ├── PtgAttrSpace.cs │ │ ├── PtgAttrSum.cs │ │ ├── PtgBool.cs │ │ ├── PtgConcat.cs │ │ ├── PtgDiv.cs │ │ ├── PtgEq.cs │ │ ├── PtgErr.cs │ │ ├── PtgExp.cs │ │ ├── PtgFunc.cs │ │ ├── PtgFuncVar.cs │ │ ├── PtgGe.cs │ │ ├── PtgGt.cs │ │ ├── PtgInt.cs │ │ ├── PtgIsect.cs │ │ ├── PtgLe.cs │ │ ├── PtgLt.cs │ │ ├── PtgMemErr.cs │ │ ├── PtgMemFunc.cs │ │ ├── PtgMissArg.cs │ │ ├── PtgMul.cs │ │ ├── PtgName.cs │ │ ├── PtgNameX.cs │ │ ├── PtgNe.cs │ │ ├── PtgNotDocumented.cs │ │ ├── PtgNum.cs │ │ ├── PtgNumber.cs │ │ ├── PtgParen.cs │ │ ├── PtgPercent.cs │ │ ├── PtgPower.cs │ │ ├── PtgRef.cs │ │ ├── PtgRef3d.cs │ │ ├── PtgRefErr.cs │ │ ├── PtgRefErr3d.cs │ │ ├── PtgRefN.cs │ │ ├── PtgStr.cs │ │ ├── PtgSub.cs │ │ ├── PtgUminus.cs │ │ ├── PtgUnion.cs │ │ └── PtgUplus.cs │ ├── RecordType.cs │ ├── Records │ │ ├── AUTOWEBPUB.cs │ │ ├── AbstractCellContent.cs │ │ ├── Addin.cs │ │ ├── Addmenu.cs │ │ ├── AlRuns.cs │ │ ├── Area.cs │ │ ├── AreaFormat.cs │ │ ├── Array.cs │ │ ├── AttachedLabel.cs │ │ ├── AutoFilter.cs │ │ ├── AutoFilter12.cs │ │ ├── AutoFilterInfo.cs │ │ ├── AxcExt.cs │ │ ├── AxesUsed.cs │ │ ├── Axis.cs │ │ ├── AxisLine.cs │ │ ├── AxisParent.cs │ │ ├── BOF.cs │ │ ├── BRAI.cs │ │ ├── Backup.cs │ │ ├── Bar.cs │ │ ├── Begin.cs │ │ ├── BkHim.cs │ │ ├── Blank.cs │ │ ├── BlankGraph.cs │ │ ├── BookBool.cs │ │ ├── BookExt.cs │ │ ├── BoolErr.cs │ │ ├── BopPop.cs │ │ ├── BopPopCustom.cs │ │ ├── BottomMargin.cs │ │ ├── BoundSheet8.cs │ │ ├── BuiltInFnGroupCount.cs │ │ ├── CF.cs │ │ ├── CF12.cs │ │ ├── CFEx.cs │ │ ├── COORDLIST.cs │ │ ├── CRN.cs │ │ ├── CRTCOOPT.cs │ │ ├── CalcCount.cs │ │ ├── CalcDelta.cs │ │ ├── CalcIter.cs │ │ ├── CalcMode.cs │ │ ├── CalcPrecision.cs │ │ ├── CalcRefMode.cs │ │ ├── CalcSaveRecalc.cs │ │ ├── CatLab.cs │ │ ├── CatSerRange.cs │ │ ├── CellWatch.cs │ │ ├── Chart.cs │ │ ├── Chart3DBarShape.cs │ │ ├── Chart3d.cs │ │ ├── ChartFormat.cs │ │ ├── ChartFrtInfo.cs │ │ ├── ClrtClient.cs │ │ ├── CodeName.cs │ │ ├── CodePage.cs │ │ ├── ColInfo.cs │ │ ├── Compat12.cs │ │ ├── CompressPictures.cs │ │ ├── CondFmt.cs │ │ ├── CondFmt12.cs │ │ ├── Continue.cs │ │ ├── ContinueFrt.cs │ │ ├── ContinueFrt11.cs │ │ ├── ContinueFrt12.cs │ │ ├── Country.cs │ │ ├── CrErr.cs │ │ ├── CrtLayout12.cs │ │ ├── CrtLine.cs │ │ ├── CrtLink.cs │ │ ├── CrtMlFrt.cs │ │ ├── CrtMlFrtContinue.cs │ │ ├── DBCell.cs │ │ ├── DBQueryExt.cs │ │ ├── DCon.cs │ │ ├── DConBin.cs │ │ ├── DConName.cs │ │ ├── DConRef.cs │ │ ├── DConn.cs │ │ ├── DELMENU.cs │ │ ├── DSF.cs │ │ ├── DVal.cs │ │ ├── DXF.cs │ │ ├── Dat.cs │ │ ├── DataFormat.cs │ │ ├── DataLabExt.cs │ │ ├── DataLabExtContents.cs │ │ ├── Date1904.cs │ │ ├── DbOrParamQry.cs │ │ ├── DefColWidth.cs │ │ ├── DefaultRowHeight.cs │ │ ├── DefaultText.cs │ │ ├── Dimensions.cs │ │ ├── DocRoute.cs │ │ ├── DropBar.cs │ │ ├── DropDownObjIds.cs │ │ ├── Dv.cs │ │ ├── DxGCol.cs │ │ ├── EDG.cs │ │ ├── EOF.cs │ │ ├── EXTERNCOUNT.cs │ │ ├── End.cs │ │ ├── EndBlock.cs │ │ ├── EndObject.cs │ │ ├── Excel9File.cs │ │ ├── ExtSST.cs │ │ ├── ExtString.cs │ │ ├── ExternName.cs │ │ ├── ExternSheet.cs │ │ ├── FEATINFO.cs │ │ ├── FEATINFO11.cs │ │ ├── FILESHARING2.cs │ │ ├── FMQRY.cs │ │ ├── FMSQRY.cs │ │ ├── Fbi.cs │ │ ├── Fbi2.cs │ │ ├── Feat.cs │ │ ├── FeatHdr.cs │ │ ├── FeatHdr11.cs │ │ ├── Feature11.cs │ │ ├── Feature12.cs │ │ ├── FilePass.cs │ │ ├── FileSharing.cs │ │ ├── FilterMode.cs │ │ ├── FnGroupName.cs │ │ ├── FnGrp12.cs │ │ ├── Font.cs │ │ ├── FontX.cs │ │ ├── Footer.cs │ │ ├── ForceFullCalculation.cs │ │ ├── Format.cs │ │ ├── Formula.cs │ │ ├── Frame.cs │ │ ├── FrtFontList.cs │ │ ├── FrtWrapper.cs │ │ ├── GCW.cs │ │ ├── GUIDTypeLib.cs │ │ ├── GelFrame.cs │ │ ├── GridSet.cs │ │ ├── Guts.cs │ │ ├── HCenter.cs │ │ ├── HFPicture.cs │ │ ├── HLink.cs │ │ ├── HLinkTooltip.cs │ │ ├── Header.cs │ │ ├── HeaderFooter.cs │ │ ├── HideObj.cs │ │ ├── HorizontalPageBreaks.cs │ │ ├── IFmtRecord.cs │ │ ├── IMDATA.cs │ │ ├── Index.cs │ │ ├── InterfaceEnd.cs │ │ ├── InterfaceHdr.cs │ │ ├── LHNGRAPH.cs │ │ ├── LHRECORD.cs │ │ ├── LISTCF.cs │ │ ├── LISTCONDFMT.cs │ │ ├── LISTDV.cs │ │ ├── LISTFIELD.cs │ │ ├── LISTOBJ.cs │ │ ├── LNEXT.cs │ │ ├── LPr.cs │ │ ├── Label.cs │ │ ├── LabelSst.cs │ │ ├── Lbl.cs │ │ ├── LeftMargin.cs │ │ ├── Legend.cs │ │ ├── LegendException.cs │ │ ├── Line.cs │ │ ├── LineFormat.cs │ │ ├── List12.cs │ │ ├── MDB.cs │ │ ├── MDTInfo.cs │ │ ├── MDXKPI.cs │ │ ├── MDXProp.cs │ │ ├── MDXSet.cs │ │ ├── MDXStr.cs │ │ ├── MDXTuple.cs │ │ ├── MKREXT.cs │ │ ├── MTRSettings.cs │ │ ├── MarkerFormat.cs │ │ ├── MergeCells.cs │ │ ├── Mms.cs │ │ ├── MsoDrawing.cs │ │ ├── MsoDrawingGroup.cs │ │ ├── MsoDrawingSelection.cs │ │ ├── MulBlank.cs │ │ ├── MulRk.cs │ │ ├── NameCmt.cs │ │ ├── NameFnGrp12.cs │ │ ├── NamePublish.cs │ │ ├── Note.cs │ │ ├── Number.cs │ │ ├── ObProj.cs │ │ ├── Obj.cs │ │ ├── ObjProtect.cs │ │ ├── ObjectLink.cs │ │ ├── OleDbConn.cs │ │ ├── OleObjectSize.cs │ │ ├── PLV.cs │ │ ├── PUB.cs │ │ ├── Palette.cs │ │ ├── Pane.cs │ │ ├── Password.cs │ │ ├── PicF.cs │ │ ├── Pie.cs │ │ ├── PieFormat.cs │ │ ├── PivotChartBits.cs │ │ ├── PlotArea.cs │ │ ├── PlotGrowth.cs │ │ ├── Pls.cs │ │ ├── Pos.cs │ │ ├── PrintGrid.cs │ │ ├── PrintRowCol.cs │ │ ├── PrintSize.cs │ │ ├── Prot4Rev.cs │ │ ├── Prot4RevPass.cs │ │ ├── Protect.cs │ │ ├── Qsi.cs │ │ ├── QsiSXTag.cs │ │ ├── Qsif.cs │ │ ├── Qsir.cs │ │ ├── RK.cs │ │ ├── RRTabId.cs │ │ ├── RSTRING.cs │ │ ├── Radar.cs │ │ ├── RealTimeData.cs │ │ ├── RecalcId.cs │ │ ├── RecipName.cs │ │ ├── RefreshAll.cs │ │ ├── RichTextStream.cs │ │ ├── RightMargin.cs │ │ ├── Row.cs │ │ ├── SBaseRef.cs │ │ ├── SCENARIO.cs │ │ ├── SIIndex.cs │ │ ├── SOUND.cs │ │ ├── SST.cs │ │ ├── SUB.cs │ │ ├── SXADDL12.cs │ │ ├── SXAddl.cs │ │ ├── SXDB.cs │ │ ├── SXDBEx.cs │ │ ├── SXDI.cs │ │ ├── SXDXF.cs │ │ ├── SXEx.cs │ │ ├── SXFDBType.cs │ │ ├── SXFormula.cs │ │ ├── SXLI.cs │ │ ├── SXPI.cs │ │ ├── SXPIEx.cs │ │ ├── SXPair.cs │ │ ├── SXStreamID.cs │ │ ├── SXString.cs │ │ ├── SXTBRGIITM.cs │ │ ├── SXTH.cs │ │ ├── SXTbl.cs │ │ ├── SXVDEx.cs │ │ ├── SXVDTEx.cs │ │ ├── SXVI.cs │ │ ├── SXVS.cs │ │ ├── SXViewEx.cs │ │ ├── SXViewEx9.cs │ │ ├── SXViewLink.cs │ │ ├── Scatter.cs │ │ ├── ScenMan.cs │ │ ├── ScenarioProtect.cs │ │ ├── Scl.cs │ │ ├── Selection.cs │ │ ├── SerAuxErrBar.cs │ │ ├── SerAuxTrend.cs │ │ ├── SerFmt.cs │ │ ├── SerParent.cs │ │ ├── SerToCrt.cs │ │ ├── Series.cs │ │ ├── SeriesList.cs │ │ ├── SeriesText.cs │ │ ├── Setup.cs │ │ ├── ShapePropsStream.cs │ │ ├── SheetExt.cs │ │ ├── ShrFmla.cs │ │ ├── ShtProps.cs │ │ ├── Sort.cs │ │ ├── SortData.cs │ │ ├── StartBlock.cs │ │ ├── StartObject.cs │ │ ├── String.cs │ │ ├── Style.cs │ │ ├── StyleExt.cs │ │ ├── SupBook.cs │ │ ├── Surf.cs │ │ ├── SxFilt.cs │ │ ├── SxFmla.cs │ │ ├── SxFormat.cs │ │ ├── SxItm.cs │ │ ├── SxIvd.cs │ │ ├── SxName.cs │ │ ├── SxRule.cs │ │ ├── SxSelect.cs │ │ ├── SxTbpg.cs │ │ ├── SxView.cs │ │ ├── Sxvd.cs │ │ ├── TABIDCONF.cs │ │ ├── Table.cs │ │ ├── TableStyle.cs │ │ ├── TableStyleElement.cs │ │ ├── TableStyles.cs │ │ ├── Template.cs │ │ ├── Text.cs │ │ ├── TextPropsStream.cs │ │ ├── Theme.cs │ │ ├── Tick.cs │ │ ├── TopMargin.cs │ │ ├── TxO.cs │ │ ├── TxtQry.cs │ │ ├── UDDESC.cs │ │ ├── Uncalced.cs │ │ ├── Units.cs │ │ ├── UnknownBiffRecord.cs │ │ ├── UserBView.cs │ │ ├── UserSViewBegin.cs │ │ ├── UserSViewEnd.cs │ │ ├── UsesELFs.cs │ │ ├── VCenter.cs │ │ ├── ValueRange.cs │ │ ├── VerticalPageBreaks.cs │ │ ├── WOpt.cs │ │ ├── WebPub.cs │ │ ├── WinDoc.cs │ │ ├── WinProtect.cs │ │ ├── Window1.cs │ │ ├── Window2.cs │ │ ├── WriteAccess.cs │ │ ├── WriteProtect.cs │ │ ├── WsBool.cs │ │ ├── XCT.cs │ │ ├── XF.cs │ │ ├── XFCRC.cs │ │ ├── XFExt.cs │ │ ├── XL5MODIFY.cs │ │ └── YMult.cs │ ├── Structures │ │ ├── CFrtId.cs │ │ ├── ChartNumNillable.cs │ │ ├── ChartParsedFormula.cs │ │ ├── ControlInfo.cs │ │ ├── DateUnit.cs │ │ ├── FixedPointNumber.cs │ │ ├── FontInfo.cs │ │ ├── FormatRun.cs │ │ ├── FrtHeader.cs │ │ ├── FrtHeaderOld.cs │ │ ├── FtCbls.cs │ │ ├── FtCblsData.cs │ │ ├── FtCf.cs │ │ ├── FtCmo.cs │ │ ├── FtEdoData.cs │ │ ├── FtGmo.cs │ │ ├── FtMacro.cs │ │ ├── FtNts.cs │ │ ├── FtPictFmla.cs │ │ ├── FtPioGrbit.cs │ │ ├── FtRbo.cs │ │ ├── FtRboData.cs │ │ ├── FtSbs.cs │ │ ├── ObjFmla.cs │ │ ├── ObjLinkFmla.cs │ │ ├── ObjectParsedFormula.cs │ │ ├── OfficeArtClientAnchorSheet.cs │ │ ├── PaneType.cs │ │ ├── PictFmlaEmbedInfo.cs │ │ ├── RefU.cs │ │ ├── Run.cs │ │ ├── SheetExtOptional.cs │ │ ├── ShortXLUnicodeString.cs │ │ ├── TxOLastRun.cs │ │ ├── TxORuns.cs │ │ ├── XLUnicodeString.cs │ │ ├── XLUnicodeStringMin2.cs │ │ ├── XLUnicodeStringNoCch.cs │ │ ├── XmlTkBackWallThicknessFrt.cs │ │ ├── XmlTkBaseTimeUnitFrt.cs │ │ ├── XmlTkBlob.cs │ │ ├── XmlTkBool.cs │ │ ├── XmlTkChain.cs │ │ ├── XmlTkColorMappingOverride.cs │ │ ├── XmlTkDWord.cs │ │ ├── XmlTkDispBlanksAsFrt.cs │ │ ├── XmlTkDouble.cs │ │ ├── XmlTkEnd.cs │ │ ├── XmlTkEndSurface.cs │ │ ├── XmlTkFloorThicknessFrt.cs │ │ ├── XmlTkFormatCodeFrt.cs │ │ ├── XmlTkHeader.cs │ │ ├── XmlTkHeightPercent.cs │ │ ├── XmlTkLogBaseFrt.cs │ │ ├── XmlTkMajorUnitFrt.cs │ │ ├── XmlTkMajorUnitTypeFrt.cs │ │ ├── XmlTkMaxFrt.cs │ │ ├── XmlTkMinFrt.cs │ │ ├── XmlTkMinorUnitFrt.cs │ │ ├── XmlTkMinorUnitTypeFrt.cs │ │ ├── XmlTkNoMultiLvlLbl.cs │ │ ├── XmlTkOverlay.cs │ │ ├── XmlTkPerspectiveFrt.cs │ │ ├── XmlTkPieComboFrom12Frt.cs │ │ ├── XmlTkRAngAxOffFrt.cs │ │ ├── XmlTkRotXFrt.cs │ │ ├── XmlTkRotYFrt.cs │ │ ├── XmlTkShowDLblsOverMax.cs │ │ ├── XmlTkSpb.cs │ │ ├── XmlTkStart.cs │ │ ├── XmlTkStartSurface.cs │ │ ├── XmlTkString.cs │ │ ├── XmlTkStyle.cs │ │ ├── XmlTkSymbolFrt.cs │ │ ├── XmlTkThemeOverride.cs │ │ ├── XmlTkTickLabelPositionFrt.cs │ │ ├── XmlTkTickLabelSkipFrt.cs │ │ ├── XmlTkTickMarkSkipFrt.cs │ │ ├── XmlTkToken.cs │ │ └── XmlTkTpb.cs │ ├── StyleData │ │ ├── BorderData.cs │ │ ├── BorderPartData.cs │ │ ├── FillData.cs │ │ ├── FontData.cs │ │ ├── FormatData.cs │ │ ├── StyleData.cs │ │ ├── StyleEnum.cs │ │ └── XFData.cs │ └── XlsDocument.cs └── b2xtranslator.xls.csproj └── b2xtranslator.sln /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files and build results 2 | 3 | # Visual Studio 2015 cache/options directory 4 | .vs/ 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # Build results 13 | [Dd]ebug/ 14 | [Dd]ebugPublic/ 15 | [Rr]elease/ 16 | [Rr]eleases/ 17 | x64/ 18 | x86/ 19 | bld/ 20 | [Bb]in/ 21 | [Oo]bj/ 22 | [Ll]og/ -------------------------------------------------------------------------------- /Common/CommonTranslatorLib/AbstractOpenXmlMapping.cs: -------------------------------------------------------------------------------- 1 | using System.Xml; 2 | 3 | namespace b2xtranslator.CommonTranslatorLib 4 | { 5 | public abstract class AbstractOpenXmlMapping 6 | { 7 | protected XmlWriter _writer; 8 | protected XmlDocument _nodeFactory; 9 | 10 | public AbstractOpenXmlMapping(XmlWriter writer) 11 | { 12 | this._writer = writer; 13 | this._nodeFactory = new XmlDocument(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Common/CommonTranslatorLib/BinaryDocument.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.CommonTranslatorLib 2 | { 3 | public abstract class BinaryDocument : IVisitable 4 | { 5 | #region IVisitable Members 6 | 7 | public abstract void Convert(T mapping); 8 | 9 | #endregion 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Common/CommonTranslatorLib/IMapping.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.CommonTranslatorLib 2 | { 3 | public interface IMapping where T : IVisitable 4 | { 5 | void Apply(T visited); 6 | } 7 | } -------------------------------------------------------------------------------- /Common/CommonTranslatorLib/IVisitable.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.CommonTranslatorLib 2 | { 3 | public interface IVisitable 4 | { 5 | void Convert(T mapping); 6 | } 7 | } -------------------------------------------------------------------------------- /Common/OfficeDrawing/BlipStoreContainer.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace b2xtranslator.OfficeDrawing 4 | { 5 | [OfficeRecord(0xF001)] 6 | public class BlipStoreContainer : RegularContainer 7 | { 8 | public BlipStoreContainer(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 9 | : base(_reader, size, typeCode, version, instance) 10 | { 11 | 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/ClientData.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | 5 | namespace b2xtranslator.OfficeDrawing 6 | { 7 | [OfficeRecord(0xF011)] 8 | public class ClientData : Record 9 | { 10 | /// 11 | /// The bytes containing the client data 12 | /// 13 | public byte[] bytes; 14 | 15 | public ClientData(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 16 | : base(_reader, size, typeCode, version, instance) 17 | { 18 | this.bytes = this.Reader.ReadBytes((int)this.BodySize); 19 | 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/ClientTextbox.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | 5 | namespace b2xtranslator.OfficeDrawing 6 | { 7 | [OfficeRecord(0xF00D)] 8 | public class ClientTextbox : Record 9 | { 10 | public byte[] Bytes; 11 | 12 | public ClientTextbox(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 13 | : base(_reader, size, typeCode, version, instance) 14 | { 15 | this.Bytes = this.Reader.ReadBytes((int)this.BodySize); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/DrawingContainer.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | 5 | namespace b2xtranslator.OfficeDrawing 6 | { 7 | [OfficeRecord(0xF002)] 8 | public class DrawingContainer : RegularContainer 9 | { 10 | public DrawingContainer(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 11 | : base(_reader, size, typeCode, version, instance) 12 | { 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/DrawingGroup.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | 5 | namespace b2xtranslator.OfficeDrawing 6 | { 7 | [OfficeRecord(0xF000)] 8 | public class DrawingGroup : RegularContainer 9 | { 10 | public DrawingGroup(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 11 | : base(_reader, size, typeCode, version, instance) { } 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Exceptions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace b2xtranslator.OfficeDrawing 4 | { 5 | public class InvalidRecordException : Exception 6 | { 7 | public InvalidRecordException() 8 | : base() { } 9 | 10 | public InvalidRecordException(string msg) 11 | : base(msg) { } 12 | 13 | public InvalidRecordException(string msg, Exception innerException) 14 | : base(msg, innerException) { } 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/OfficeRecordAttribute.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System; 4 | 5 | namespace b2xtranslator.OfficeDrawing 6 | { 7 | /// 8 | /// Used for mapping Office record TypeCodes to the classes implementing them. 9 | /// 10 | [AttributeUsage(AttributeTargets.Class)] 11 | public class OfficeRecordAttribute : Attribute 12 | { 13 | public OfficeRecordAttribute() { } 14 | 15 | public OfficeRecordAttribute(params ushort[] typecodes) 16 | { 17 | this._typeCodes = typecodes; 18 | } 19 | 20 | public ushort[] TypeCodes 21 | { 22 | get { return this._typeCodes; } 23 | } 24 | 25 | private ushort[] _typeCodes = new ushort[0]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/OfficeShapeTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace b2xtranslator.OfficeDrawing 4 | { 5 | /// 6 | /// Used for mapping Office shape types to the classes implementing them. 7 | /// 8 | [AttributeUsage(AttributeTargets.Class)] 9 | public class OfficeShapeTypeAttribute : Attribute 10 | { 11 | public OfficeShapeTypeAttribute() { } 12 | 13 | public OfficeShapeTypeAttribute(uint typecode) 14 | { 15 | this.TypeCode = typecode; 16 | } 17 | 18 | public uint TypeCode; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/ShadowStyleBooleanProperties.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.Tools; 2 | 3 | namespace b2xtranslator.OfficeDrawing 4 | { 5 | public class ShadowStyleBooleanProperties 6 | { 7 | public bool fShadowObscured; 8 | public bool fShadow; 9 | public bool fUsefshadowObscured; 10 | public bool fUsefShadow; 11 | 12 | public ShadowStyleBooleanProperties(uint entryOperand) 13 | { 14 | this.fShadowObscured = Utils.BitmaskToBool(entryOperand, 0x1); 15 | this.fShadow = Utils.BitmaskToBool(entryOperand, 0x2); 16 | this.fUsefshadowObscured = Utils.BitmaskToBool(entryOperand, 0x10000); 17 | this.fUsefShadow = Utils.BitmaskToBool(entryOperand, 0x20000); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/DiamondType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(4)] 4 | public class DiamondType : ShapeType 5 | { 6 | public DiamondType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m10800,l,10800,10800,21600,21600,10800xe"; 13 | 14 | this.ConnectorLocations = "Rectangle"; 15 | 16 | this.TextboxRectangle = "5400,5400,16200,16200"; 17 | 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartCollateType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(125)] 4 | class FlowChartCollateType : ShapeType 5 | { 6 | public FlowChartCollateType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m21600,21600l,21600,21600,,,xe"; 11 | this.ConnectorLocations = "10800,0;10800,10800;10800,21600"; 12 | this.TextboxRectangle = "5400,5400,16200,16200"; 13 | 14 | } 15 | } 16 | } 17 | 18 | 19 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartConnectorType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(120)] 4 | public class FlowChartConnectorType : ShapeType 5 | { 6 | public FlowChartConnectorType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.round; 11 | 12 | this.Path = "m10800,qx,10800,10800,21600,21600,10800,10800,xe"; 13 | 14 | this.ConnectorLocations = "10800,0;3163,3163;0,10800;3163,18437;10800,21600;18437,18437;21600,10800;18437,3163"; 15 | 16 | this.TextboxRectangle = "3163,3163,18437,18437"; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartDecisionType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(110)] 4 | public class FlowChartDecisionType :ShapeType 5 | { 6 | public FlowChartDecisionType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m10800,l,10800,10800,21600,21600,10800xe"; 13 | 14 | this.ConnectorLocations = "Rectangle"; 15 | 16 | this.TextboxRectangle = "5400,5400,16200,16200"; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartDelayType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(135)] 4 | class FlowChartDelayType : ShapeType 5 | { 6 | public FlowChartDelayType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m10800,qx21600,10800,10800,21600l,21600,,xe"; 11 | this.ConnectorLocations = "Rectangle"; 12 | this.TextboxRectangle = "0,3163,18437,18437"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartDisplayType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(134)] 4 | class FlowChartDisplayType : ShapeType 5 | { 6 | public FlowChartDisplayType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m17955,v862,282,1877,1410,2477,3045c21035,5357,21372,7895,21597,10827v-225,2763,-562,5300,-1165,7613c19832,20132,18817,21260,17955,21597r-14388,l,10827,3567,xe"; 11 | this.ConnectorLocations = "Rectangle"; 12 | this.TextboxRectangle = "3567,0,17955,21600"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartExtractType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(127)] 4 | class FlowChartExtractType : ShapeType 5 | { 6 | public FlowChartExtractType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m10800,l21600,21600,,21600xe"; 11 | this.ConnectorLocations = "10800,0;5400,10800;10800,21600;16200,10800"; 12 | this.TextboxRectangle = "5400,10800,16200,21600"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartInputOutputType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(111)] 4 | public class FlowChartInputOutputType :ShapeType 5 | { 6 | public FlowChartInputOutputType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m4321,l21600,,17204,21600,,21600xe"; 13 | 14 | this.ConnectorLocations = "2961,0;10800,0;2161,10800;8602,21600;10800,21600;19402,10800"; 15 | 16 | this.TextboxRectangle = "4321,0,17204,21600"; 17 | 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartInternalStorageType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(113)] 4 | public class FlowChartInternalStorageType : ShapeType 5 | { 6 | public FlowChartInternalStorageType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m,l,21600r21600,l21600,xem4236,nfl4236,21600em,4236nfl21600,4236e"; 13 | 14 | this.ConnectorLocations = "Rectangle"; 15 | 16 | this.TextboxRectangle = "4236,4236,21600,21600"; 17 | } 18 | 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartMagneticDiskType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(132)] 4 | class FlowChartMagneticDiskType : ShapeType 5 | { 6 | public FlowChartMagneticDiskType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m10800,qx,3391l,18209qy10800,21600,21600,18209l21600,3391qy10800,xem,3391nfqy10800,6782,21600,3391e"; 11 | this.ConnectorLocations = "10800,6782;10800,0;0,10800;10800,21600;21600,10800"; 12 | this.ConnectorAngles = "270,270,180,90,0"; 13 | this.TextboxRectangle = "0,6782,21600,18209"; 14 | } 15 | } 16 | } 17 | 18 | 19 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartMagneticDrumType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(133)] 4 | class FlowChartMagneticDrumType : ShapeType 5 | { 6 | public FlowChartMagneticDrumType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m21600,10800qy18019,21600l3581,21600qx,10800,3581,l18019,qx21600,10800xem18019,21600nfqx14438,10800,18019,e"; 11 | this.ConnectorLocations = "10800,0;0,10800;10800,21600;14438,10800;21600,10800"; 12 | this.ConnectorAngles = "270,180,90,0,0"; 13 | this.TextboxRectangle = "3581,0,14438,21600"; 14 | 15 | } 16 | } 17 | } 18 | 19 | 20 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartMagneticTapeType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(131)] 4 | class FlowChartMagneticTapeType : ShapeType 5 | { 6 | public FlowChartMagneticTapeType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "ar,,21600,21600,18685,18165,10677,21597l20990,21597r,-3432xe"; 11 | this.ConnectorLocations = "Rectangle"; 12 | this.TextboxRectangle = "3163,3163,18437,18437"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartManualInputType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(118)] 4 | public class FlowChartManualInputType :ShapeType 5 | { 6 | public FlowChartManualInputType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m,4292l21600,r,21600l,21600xe"; 13 | 14 | this.ConnectorLocations = "10800,2146;0,10800;10800,21600;21600,10800"; 15 | 16 | this.TextboxRectangle = "0,4291,21600,21600"; 17 | 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartManualOperationType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(119)] 4 | public class FlowChartManualOperationType : ShapeType 5 | { 6 | public FlowChartManualOperationType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m,l21600,,17240,21600r-12880,xe"; 13 | 14 | this.ConnectorLocations = "10800,0;2180,10800;10800,21600;19420,10800"; 15 | 16 | this.TextboxRectangle = "4321,0,17204,21600"; 17 | 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartMergeType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(128)] 4 | class FlowChartMergeType : ShapeType 5 | { 6 | public FlowChartMergeType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m,l21600,,10800,21600xe"; 11 | this.ConnectorLocations = "10800,0;5400,10800;10800,21600;16200,10800"; 12 | this.TextboxRectangle = "5400,0,16200,10800"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartOffpageConnectorType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(177)] 4 | class FlowChartOffpageConnectorType : ShapeType 5 | { 6 | public FlowChartOffpageConnectorType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m,l21600,r,17255l10800,21600,,17255xe"; 11 | this.ConnectorLocations = "Rectangle"; 12 | this.TextboxRectangle = "0,0,21600,17255"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartOnlineStorageType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(130)] 4 | class FlowChartOnlineStorageType : ShapeType 5 | { 6 | public FlowChartOnlineStorageType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m3600,21597c2662,21202,1837,20075,1087,18440,487,16240,75,13590,,10770,75,8007,487,5412,1087,3045,1837,1465,2662,337,3600,l21597,v-937,337,-1687,1465,-2512,3045c18485,5412,18072,8007,17997,10770v75,2820,488,5470,1088,7670c19910,20075,20660,21202,21597,21597xe"; 11 | this.ConnectorLocations = "10800,0;0,10800;10800,21600;17997,10800"; 12 | this.TextboxRectangle = "3600,0,17997,21600"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartOrType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(124)] 4 | class FlowChartOrType : ShapeType 5 | { 6 | public FlowChartOrType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m10800,qx,10800,10800,21600,21600,10800,10800,xem,10800nfl21600,10800em10800,nfl10800,21600e"; 11 | this.ConnectorLocations = "10800,0;3163,3163;0,10800;3163,18437;10800,21600;18437,18437;21600,10800;18437,3163"; 12 | this.TextboxRectangle = "3163,3163,18437,18437"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartPredefinedProcessType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(112)] 4 | public class FlowChartPredefinedProcessType :ShapeType 5 | { 6 | public FlowChartPredefinedProcessType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m,l,21600r21600,l21600,xem2610,nfl2610,21600em18990,nfl18990,21600e"; 13 | 14 | this.ConnectorLocations = "Rectangle"; 15 | 16 | this.TextboxRectangle = "2610,0,18990,21600"; 17 | 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartPreparationType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(117)] 4 | public class FlowChartPreparationType: ShapeType 5 | { 6 | public FlowChartPreparationType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m4353,l17214,r4386,10800l17214,21600r-12861,l,10800xe"; 13 | 14 | this.ConnectorLocations = "Rectangle"; 15 | 16 | this.TextboxRectangle = "4353,0,17214,21600"; 17 | 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartProcessType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(109)] 4 | public class FlowChartProcessType : ShapeType 5 | { 6 | public FlowChartProcessType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m,l,21600r21600,l21600,xe"; 13 | this.ConnectorLocations = "Rectangle"; 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartPunchedCardType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(121)] 4 | class FlowChartPunchedCardType : ShapeType 5 | { 6 | public FlowChartPunchedCardType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m4321,l21600,r,21600l,21600,,4338xe"; 11 | this.ConnectorLocations = "Rectangle"; 12 | this.TextboxRectangle = "0,4321,21600,21600"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartSortType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(126)] 4 | class FlowChartSortType : ShapeType 5 | { 6 | public FlowChartSortType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m10800,l,10800,10800,21600,21600,10800xem,10800nfl21600,10800e"; 11 | this.ConnectorLocations = "Rectangle"; 12 | this.TextboxRectangle = "5400,5400,16200,16200"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartSummingJunctionType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(123)] 4 | class FlowChartSummingJunctionType : ShapeType 5 | { 6 | public FlowChartSummingJunctionType() 7 | { 8 | this.ShapeConcentricFill = false; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m10800,qx,10800,10800,21600,21600,10800,10800,xem3163,3163nfl18437,18437em3163,18437nfl18437,3163e"; 11 | this.ConnectorLocations = "10800,0;3163,3163;0,10800;3163,18437;10800,21600;18437,18437;21600,10800;18437,3163"; 12 | this.TextboxRectangle = "3163,3163,18437,18437"; 13 | } 14 | } 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/FlowChartTerminatorType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(116)] 4 | public class FlowChartTerminatorType : ShapeType 5 | { 6 | public FlowChartTerminatorType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.round; 11 | 12 | this.Path = "m3475,qx,10800,3475,21600l18125,21600qx21600,10800,18125,xe"; 13 | 14 | this.ConnectorLocations = "Rectangle"; 15 | 16 | this.TextboxRectangle = "1018,3163,20582,18437"; 17 | 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/IrregularSealOneType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(71)] 4 | public class IrregularSealOneType : ShapeType 5 | { 6 | public IrregularSealOneType() 7 | { 8 | this.ShapeConcentricFill = false; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m10800,5800l8352,2295,7312,6320,370,2295,4627,7617,,8615r3722,3160l135,14587r5532,-650l4762,17617,7715,15627r770,5973l10532,14935r2715,4802l14020,14457r4125,3638l16837,12942r4763,348l17607,10475,21097,8137,16702,7315,18380,4457r-4225,868l14522,xe"; 13 | 14 | this.ConnectorLocations = "14522,0;0,8615;8485,21600;21600,13290"; 15 | 16 | this.ConnectorAngles = "270,180,90,0"; 17 | 18 | this.TextboxRectangle = "4627,6320,16702,13937"; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/LightningBoltType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(73)] 4 | class LightningBoltType : ShapeType 5 | { 6 | public LightningBoltType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m8472,l,3890,7602,8382,5022,9705r7200,4192l10012,14915r11588,6685l14767,12877r1810,-870l11050,6797r1810,-717xe"; 11 | 12 | this.ConnectorLocations = "8472,0;0,3890;5022,9705;10012,14915;21600,21600;16577,12007;12860,6080"; 13 | this.ConnectorAngles = "270,270,180,180,90,0,0"; 14 | this.TextboxRectangle = "8757,7437,13917,14277"; 15 | 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/LineType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(20)] 4 | public class LineType : ShapeType 5 | { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/OvalType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(3)] 4 | public class OvalType : ShapeType 5 | { 6 | public OvalType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.round; 11 | 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/PentagonType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(56)] 4 | public class PentagonType : ShapeType 5 | { 6 | public PentagonType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m10800,l,8259,4200,21600r13200,l21600,8259xe"; 13 | 14 | this.ConnectorLocations = "10800,0;0,8259;4200,21600;10800,21600;17400,21600;21600,8259"; 15 | 16 | this.ConnectorAngles = "270,180,90,90,90,0"; 17 | 18 | this.TextboxRectangle = "4200,5077,17400,21600"; 19 | 20 | } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/RectangleType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(1)] 4 | public class RectangleType : ShapeType 5 | { 6 | public RectangleType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m,l,21600r21600,l21600,xe"; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/RightTriangleType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(6)] 4 | public class RightTriangleType : ShapeType 5 | { 6 | public RightTriangleType() 7 | { 8 | 9 | this.ShapeConcentricFill = true; 10 | 11 | this.Joins = JoinStyle.miter; 12 | 13 | this.Path = "m,l,21600r21600,xe"; 14 | 15 | this.ConnectorLocations = "0,0;0,10800;0,21600;10800,21600;21600,21600;10800,10800"; 16 | 17 | this.TextboxRectangle = "1800,12600,12600,19800"; 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/RoundedRectangleType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | /// 4 | /// interim solution
5 | /// OOX uses an additional attribute: arcsize 6 | ///
7 | [OfficeShapeType(2)] 8 | public class RoundedRectangleType : RectangleType 9 | { 10 | public RoundedRectangleType() : base() 11 | { 12 | this.Joins = JoinStyle.round; 13 | this.AdjustmentValues = "5400"; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/ShapeType.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Common/OfficeDrawing/Shapetypes/ShapeType.cs -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/Startype.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(12)] 4 | public class Startype : ShapeType 5 | { 6 | public Startype() 7 | { 8 | this.ShapeConcentricFill = true; 9 | this.Joins = JoinStyle.miter; 10 | 11 | this.Path="m10800,l8280,8259,,8259r6720,5146l4200,21600r6600,-5019l17400,21600,14880,13405,21600,8259r-8280,xe"; 12 | 13 | this.ConnectorLocations = "10800,0;0,8259;4200,21600;17400,21600;21600,8259"; 14 | 15 | this.TextboxRectangle = "6720,8259,14880,15628"; 16 | 17 | } 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/StraightConnectorType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(32)] 4 | public class StraightConnectorType : ShapeType 5 | { 6 | public StraightConnectorType() 7 | { 8 | this.Path = "m,l21600,21600e"; 9 | this.ConnectorLocations = "0,0;21600,21600"; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/TextboxType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(202)] 4 | public class TextboxType : ShapeType 5 | { 6 | public TextboxType() 7 | { 8 | this.ShapeConcentricFill = true; 9 | 10 | this.Joins = JoinStyle.miter; 11 | 12 | this.Path = "m,l,21600r21600,l21600,xe"; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/Shapetypes/UturnArrowType.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OfficeDrawing.Shapetypes 2 | { 3 | [OfficeShapeType(101)] 4 | class UturnArrowType : ShapeType 5 | { 6 | public UturnArrowType() 7 | { 8 | this.ShapeConcentricFill = false; 9 | this.Joins = JoinStyle.miter; 10 | this.Path = "m15662,14285l21600,8310r-2970,qy9250,,,8485l,21600r6110,l6110,8310qy8907,5842l9725,5842qx12520,8310l9725,8310xe"; 11 | 12 | this.ConnectorLocations = "9250,0;3055,21600;9725,8310;15662,14285;21600,8310"; 13 | this.ConnectorAngles = "270,90,90,90,0"; 14 | 15 | this.TextboxRectangle = "0,8310,6110,21600"; 16 | 17 | 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Common/OfficeDrawing/UnknownRecord.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | 5 | namespace b2xtranslator.OfficeDrawing 6 | { 7 | public class UnknownRecord : Record 8 | { 9 | public UnknownRecord(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 10 | : base(_reader, size, typeCode, version, instance) 11 | { 12 | if (this.Reader.BaseStream.Length - this.Reader.BaseStream.Position >= size) 13 | { 14 | this.Reader.ReadBytes((int)size); 15 | } 16 | else 17 | { 18 | this.Reader.ReadBytes((int)(this.Reader.BaseStream.Length - this.Reader.BaseStream.Position)); 19 | } 20 | } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Common/OfficeGraph/BiffRecords/UnknownGraphRecord.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.OfficeGraph 6 | { 7 | public class UnknownGraphRecord : OfficeGraphBiffRecord 8 | { 9 | public byte[] Content; 10 | 11 | public UnknownGraphRecord(IStreamReader reader, ushort id, ushort length) 12 | : base(reader, (GraphRecordNumber)id, length) 13 | { 14 | this.Content = reader.ReadBytes((int)length); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Common/OfficeGraph/OfficeGraphBiffRecordAttribute.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using System; 4 | 5 | namespace b2xtranslator.OfficeGraph 6 | { 7 | /// 8 | /// Used for mapping Office record TypeCodes to the classes implementing them. 9 | /// 10 | [AttributeUsage(AttributeTargets.Class)] 11 | public class OfficeGraphBiffRecordAttribute : Attribute 12 | { 13 | public OfficeGraphBiffRecordAttribute() { } 14 | 15 | public OfficeGraphBiffRecordAttribute(params GraphRecordNumber[] typecodes) 16 | { 17 | this._typeCodes = typecodes; 18 | } 19 | 20 | public GraphRecordNumber[] TypeCodes 21 | { 22 | get { return this._typeCodes; } 23 | } 24 | 25 | private GraphRecordNumber[] _typeCodes = new GraphRecordNumber[0]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Common/OfficeGraph/Structures/Enums.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | namespace b2xtranslator.OfficeGraph 5 | { 6 | public enum HorizontalAlignment 7 | { 8 | Left = 0x01, 9 | Center = 0x02, 10 | Right = 0x03, 11 | Justify = 0x04, 12 | Distributed = 0x07 13 | } 14 | 15 | public enum VerticalAlignment 16 | { 17 | Top = 0x01, 18 | Middle = 0x02, 19 | Bottom = 0x03, 20 | Justify = 0x04, 21 | Distributed = 0x07 22 | } 23 | 24 | public enum BackgroundMode 25 | { 26 | Transparent = 1, 27 | Opaque = 2 28 | } 29 | 30 | public enum ReadingOrder 31 | { 32 | Complex, 33 | LeftToRight, 34 | RightToLeft 35 | } 36 | 37 | public enum TextRotation 38 | { 39 | Custom, 40 | Stacked, 41 | CounterClockwise, 42 | Clockwise 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Common/OfficeGraph/Structures/FontInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | using b2xtranslator.Tools; 5 | 6 | namespace b2xtranslator.OfficeGraph 7 | { 8 | /// 9 | /// This structure specifies a Font record in the file. 10 | /// 11 | public class FontInfo 12 | { 13 | /// 14 | /// A bit that specifies whether the fonts are scaled. 15 | /// 16 | public bool fScaled; 17 | 18 | public ushort ifnt; 19 | // TODO: implement FontIndex??? 20 | 21 | public FontInfo(IStreamReader reader) 22 | { 23 | this.fScaled = Utils.BitmaskToBool(reader.ReadUInt16(), 0x0001); 24 | this.ifnt = reader.ReadUInt16(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/AppPropertiesPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib 2 | { 3 | public class AppPropertiesPart : OpenXmlPart 4 | { 5 | internal AppPropertiesPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return OpenXmlContentTypes.ExtendedProperties; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.ExtendedProperties; } 18 | } 19 | 20 | public override string TargetName { get { return "app"; } } 21 | public override string TargetDirectory { get { return "docProps"; } } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/CorePropertiesPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib 2 | { 3 | public class CorePropertiesPart : OpenXmlPart 4 | { 5 | internal CorePropertiesPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return OpenXmlContentTypes.CoreProperties; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.CoreProperties; } 18 | } 19 | 20 | public override string TargetName { get { return "core"; } } 21 | public override string TargetDirectory { get { return "docProps"; } } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/CustomXmlPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class CustomXmlPart : OpenXmlPart 4 | { 5 | public CustomXmlPart(OpenXmlPackage package, int partIndex) 6 | : base(package, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return OpenXmlContentTypes.Xml; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.CustomXml; } 18 | } 19 | 20 | public override string TargetName { get { return "item" + this.PartIndex; } } 21 | public override string TargetDirectory { get { return @"customXml"; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/CustomXmlPropertiesPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class CustomXmlPropertiesPart : OpenXmlPart 4 | { 5 | public CustomXmlPropertiesPart(OpenXmlPartContainer parent, int partIndex) 6 | : base(parent, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return OpenXmlContentTypes.CustomXmlProperties; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.CustomXmlProperties; } 18 | } 19 | 20 | public override string TargetName { get { return "itemProps" + this.PartIndex; } } 21 | public override string TargetDirectory { get { return "customXml"; } } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/DrawingML/ChartPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.DrawingML 2 | { 3 | 4 | public class ChartPart : OpenXmlPart 5 | { 6 | public ChartPart(OpenXmlPartContainer parent, int partIndex) 7 | : base(parent, partIndex) 8 | { 9 | } 10 | 11 | public override string ContentType 12 | { 13 | get { return DrawingMLContentTypes.Chart; } 14 | } 15 | 16 | public override string RelationshipType 17 | { 18 | get { return OpenXmlRelationshipTypes.Chart; } 19 | } 20 | 21 | public override string TargetName { get { return "chart" + this.PartIndex.ToString(); } } 22 | public override string TargetDirectory { get { return "../charts"; } } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/IZipReader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace b2xtranslator.OpenXmlLib 5 | { 6 | /// IZipReader defines an interface to read entries from a ZIP file. 7 | public interface IZipReader : IDisposable 8 | { 9 | /// Get an entry from a ZIP file. 10 | /// The relative path of the entry in the ZIP file. 11 | /// A stream containing the uncompressed data. 12 | Stream GetEntry(string relativePath); 13 | 14 | /// Close the ZIP file. 15 | void Close(); 16 | } 17 | } -------------------------------------------------------------------------------- /Common/OpenXmlLib/PresentationML/HandoutMasterPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.PresentationML 2 | { 3 | public class HandoutMasterPart : SlideMasterPart 4 | { 5 | public HandoutMasterPart(OpenXmlPartContainer parent, int partIndex) 6 | : base(parent, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return PresentationMLContentTypes.HandoutMaster; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.HandoutMaster; } 18 | } 19 | 20 | public override string TargetName { get { return "handoutMaster" + this.PartIndex; } } 21 | public override string TargetDirectory { get { return "handoutMasters"; } } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/PresentationML/NotePart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.PresentationML 2 | { 3 | public class NotePart : SlidePart 4 | { 5 | public NotePart(OpenXmlPartContainer parent, int partIndex) 6 | : base(parent, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return PresentationMLContentTypes.NotesSlide; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.NotesSlide; } 18 | } 19 | 20 | public override string TargetName { get { return "notesSlide" + this.PartIndex; } } 21 | public override string TargetDirectory { get { return "notesSlides"; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/PresentationML/NotesMasterPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.PresentationML 2 | { 3 | public class NotesMasterPart : SlideMasterPart 4 | { 5 | public NotesMasterPart(OpenXmlPartContainer parent, int partIndex) 6 | : base(parent, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return PresentationMLContentTypes.NotesMaster; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.NotesMaster; } 18 | } 19 | 20 | public override string TargetName { get { return "notesMaster" + this.PartIndex; } } 21 | public override string TargetDirectory { get { return "notesMasters"; } } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/PresentationML/SlideLayoutPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.PresentationML 2 | { 3 | public class SlideLayoutPart : ContentPart 4 | { 5 | public SlideLayoutPart(OpenXmlPartContainer parent, int partIndex) 6 | : base(parent, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return PresentationMLContentTypes.SlideLayout; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.SlideLayout; } 18 | } 19 | 20 | public override string TargetName { get { return "slideLayout" + this.PartIndex; } } 21 | public override string TargetDirectory { get { return "..\\slideLayouts"; } } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/PresentationML/SlidePart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.PresentationML 2 | { 3 | public class SlidePart : ContentPart 4 | { 5 | public SlidePart(OpenXmlPartContainer parent, int partIndex) 6 | : base(parent, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return PresentationMLContentTypes.Slide; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Slide; } 18 | } 19 | 20 | public override string TargetName { get { return "slide" + this.PartIndex; } } 21 | public override string TargetDirectory { get { return "slides"; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/SpreadsheetML/SharedStringPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.SpreadsheetML 2 | { 3 | public class SharedStringPart : OpenXmlPart 4 | { 5 | public SharedStringPart(OpenXmlPartContainer parent) 6 | : base(parent,0) 7 | { 8 | } 9 | 10 | 11 | public override string ContentType 12 | { 13 | get { return SpreadsheetMLContentTypes.SharedStrings; } 14 | } 15 | 16 | public override string RelationshipType 17 | { 18 | get { return OpenXmlRelationshipTypes.SharedStrings; } 19 | } 20 | 21 | public override string TargetName { get { return "sharedStrings"; } } 22 | public override string TargetDirectory { get { return ""; } } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/SpreadsheetML/StylesPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.SpreadsheetML 2 | { 3 | public class StylesPart : OpenXmlPart 4 | { 5 | public StylesPart(OpenXmlPartContainer parent) 6 | : base(parent,0) 7 | { 8 | } 9 | 10 | 11 | public override string ContentType 12 | { 13 | get { return SpreadsheetMLContentTypes.Styles; } 14 | } 15 | 16 | public override string RelationshipType 17 | { 18 | get { return OpenXmlRelationshipTypes.Styles; } 19 | } 20 | 21 | public override string TargetName { get { return "styles"; } } 22 | public override string TargetDirectory { get { return ""; } } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/ThemePart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib 2 | { 3 | public class ThemePart : OpenXmlPart 4 | { 5 | public ThemePart(OpenXmlPartContainer parent, int partIndex) 6 | : base(parent, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return OpenXmlContentTypes.Theme; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Theme; } 18 | } 19 | 20 | public override string TargetName 21 | { 22 | get { return "theme" + this.PartIndex; } 23 | } 24 | 25 | public override string TargetDirectory 26 | { 27 | get { return "theme"; } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/VbaDataPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib 2 | { 3 | public class VbaDataPart: ContentPart 4 | { 5 | internal VbaDataPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return MicrosoftWordContentTypes.VbaData; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return MicrosoftWordRelationshipTypes.VbaData; } 18 | } 19 | 20 | public override string TargetName { get { return "vbaData"; } } 21 | public override string TargetExt { get { return ".xml"; } } 22 | public override string TargetDirectory { get { return ""; } } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/ViewPropertiesPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib 2 | { 3 | public class ViewPropertiesPart : OpenXmlPart 4 | { 5 | internal ViewPropertiesPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return PresentationMLContentTypes.ViewProps; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlNamespaces.viewProps; } 18 | } 19 | 20 | public override string TargetName { get { return "viewProps"; } } 21 | public override string TargetDirectory { get { return ""; } } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/CommentsPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class CommentsPart : ContentPart 4 | { 5 | internal CommentsPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return WordprocessingMLContentTypes.Comments; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Comments; } 18 | } 19 | 20 | public override string TargetName { get { return "comments"; } } 21 | public override string TargetDirectory { get { return ""; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/EndnotesPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class EndnotesPart : ContentPart 4 | { 5 | public EndnotesPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return WordprocessingMLContentTypes.Endnotes; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Endnotes; } 18 | } 19 | 20 | public override string TargetName { get { return "endnotes"; } } 21 | public override string TargetDirectory { get { return ""; } } 22 | } 23 | } -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/FontTablePart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class FontTablePart : OpenXmlPart 4 | { 5 | public FontTablePart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return WordprocessingMLContentTypes.FontTable; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.FontTable; } 18 | } 19 | 20 | public override string TargetName { get { return "fontTable"; } } 21 | public override string TargetDirectory { get { return ""; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/FooterPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class FooterPart : ContentPart 4 | { 5 | public FooterPart(OpenXmlPartContainer parent, int partIndex) 6 | : base(parent, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return WordprocessingMLContentTypes.Footer; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Footer; } 18 | } 19 | 20 | public override string TargetName { get { return "footer" + this.PartIndex; } } 21 | public override string TargetDirectory { get { return ""; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/FootnotesPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class FootnotesPart : ContentPart 4 | { 5 | public FootnotesPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return WordprocessingMLContentTypes.Footnotes; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Footnotes; } 18 | } 19 | 20 | public override string TargetName { get { return "footnotes"; } } 21 | public override string TargetDirectory { get { return ""; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/GlossaryPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class GlossaryPart : MainDocumentPart 4 | { 5 | public GlossaryPart(OpenXmlPartContainer parent, string contentType) 6 | : base (parent, contentType) 7 | { 8 | 9 | } 10 | 11 | public override string RelationshipType { get { return OpenXmlRelationshipTypes.GlossaryDocument; } } 12 | public override string TargetDirectory { get { return "glossary"; } } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/HeaderPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class HeaderPart : ContentPart 4 | { 5 | public HeaderPart(OpenXmlPartContainer parent, int partIndex) 6 | : base(parent, partIndex) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return WordprocessingMLContentTypes.Header; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Header; } 18 | } 19 | 20 | public override string TargetName { get { return "header" + this.PartIndex; } } 21 | public override string TargetDirectory { get { return ""; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/NumberingDefinitionsPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class NumberingDefinitionsPart : OpenXmlPart 4 | { 5 | public NumberingDefinitionsPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return WordprocessingMLContentTypes.Numbering; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Numbering; } 18 | } 19 | 20 | public override string TargetName { get { return "numbering"; } } 21 | public override string TargetDirectory { get { return ""; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/SettingsPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class SettingsPart : OpenXmlPart 4 | { 5 | internal SettingsPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return WordprocessingMLContentTypes.Settings; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Settings; } 18 | } 19 | 20 | public override string TargetName { get { return "settings"; } } 21 | public override string TargetDirectory { get { return ""; } } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/StyleDefinitionsPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class StyleDefinitionsPart : OpenXmlPart 4 | { 5 | public StyleDefinitionsPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return WordprocessingMLContentTypes.Styles; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return OpenXmlRelationshipTypes.Styles; } 18 | } 19 | 20 | public override string TargetName 21 | { 22 | get { return "styles"; } 23 | } 24 | 25 | public override string TargetDirectory 26 | { 27 | get { return ""; } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Common/OpenXmlLib/WordprocessingML/ToolbarsPart.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.OpenXmlLib.WordprocessingML 2 | { 3 | public class ToolbarsPart: ContentPart 4 | { 5 | internal ToolbarsPart(OpenXmlPartContainer parent) 6 | : base(parent, 0) 7 | { 8 | } 9 | 10 | public override string ContentType 11 | { 12 | get { return MicrosoftWordContentTypes.Toolbars; } 13 | } 14 | 15 | public override string RelationshipType 16 | { 17 | get { return MicrosoftWordRelationshipTypes.Toolbars; } 18 | } 19 | 20 | public override string TargetName { get { return "attachedToolbars"; } } 21 | public override string TargetExt { get { return ".bin"; } } 22 | public override string TargetDirectory { get { return ""; } } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/Shell/ProcessingFile.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.IO; 3 | 4 | namespace b2xtranslator.Shell 5 | { 6 | public class ProcessingFile 7 | { 8 | public FileInfo File; 9 | 10 | public ProcessingFile(string inputFile) 11 | { 12 | var inFile = new FileInfo(inputFile); 13 | 14 | this.File = inFile.CopyTo(System.IO.Path.GetTempFileName(), true); 15 | this.File.IsReadOnly = false; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Common/StructuredStorage/Writer/EmptyDirectoryEntry.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.StructuredStorage.Common; 2 | 3 | namespace b2xtranslator.StructuredStorage.Writer 4 | { 5 | /// 6 | /// Empty directory entry used to pad out directory stream. 7 | /// Author: math 8 | /// 9 | class EmptyDirectoryEntry : BaseDirectoryEntry 10 | { 11 | 12 | /// 13 | /// Constructor 14 | /// 15 | /// the current context 16 | internal EmptyDirectoryEntry(StructuredStorageContext context) 17 | : base("", context) 18 | { 19 | this.Color = DirectoryEntryColor.DE_RED; // 0x0 20 | this.Type = DirectoryEntryType.STGTY_INVALID; 21 | } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Common/b2xtranslator.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | netcoreapp2.0 4 | 2.0.0 5 | https://github.com/EvolutionJobs/b2xtranslator-core 6 | Git 7 | https://github.com/EvolutionJobs/b2xtranslator-core 8 | https://github.com/EvolutionJobs/b2xtranslator-core/blob/master/LICENSE 9 | 2017, Evolution Recruitment Solutions and 2008-2009, DIaLOGIKa 10 | Evolution Recruitment Solutions 11 | Evolution Recruitment Solutions and DIaLOGIKa 12 | Convert binary legacy Microsoft Office formats to OpenXML 13 | 14 | -------------------------------------------------------------------------------- /Doc/DocFileFormat/AnnotationOwnerList.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | using b2xtranslator.Tools; 4 | 5 | namespace b2xtranslator.DocFileFormat 6 | { 7 | public class AnnotationOwnerList : List 8 | { 9 | public AnnotationOwnerList(FileInformationBlock fib, VirtualStream tableStream) : base() 10 | { 11 | tableStream.Seek(fib.fcGrpXstAtnOwners, System.IO.SeekOrigin.Begin); 12 | 13 | while (tableStream.Position < (fib.fcGrpXstAtnOwners + fib.lcbGrpXstAtnOwners)) 14 | { 15 | this.Add(Utils.ReadXst(tableStream)); 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Doc/DocFileFormat/AnnotationReferenceDescriptorExtra.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.StructuredStorage.Reader; 2 | 3 | namespace b2xtranslator.DocFileFormat 4 | { 5 | public class AnnotationReferenceDescriptorExtra : ByteStructure 6 | { 7 | public DateAndTime Date; 8 | 9 | public int CommentDepth; 10 | 11 | public int ParentOffset; 12 | 13 | public AnnotationReferenceDescriptorExtra(VirtualStreamReader reader, int length) 14 | : base(reader, length) 15 | { 16 | this.Date = new DateAndTime(this._reader.ReadBytes(4)); 17 | this._reader.ReadBytes(2); 18 | this.CommentDepth = this._reader.ReadInt32(); 19 | this.ParentOffset = this._reader.ReadInt32(); 20 | if (length > 16) 21 | { 22 | int flag = this._reader.ReadInt32(); 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Doc/DocFileFormat/ByteParseException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace b2xtranslator.DocFileFormat 4 | { 5 | public class ByteParseException : Exception 6 | { 7 | public ByteParseException() : base() 8 | { 9 | } 10 | 11 | public ByteParseException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public ByteParseException(string message, Exception innerException) 17 | : base(message, innerException) 18 | { 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Doc/DocFileFormat/CharacterRange.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.DocFileFormat 2 | { 3 | public class CharacterRange 4 | { 5 | public int CharacterPosition; 6 | public int CharacterCount; 7 | 8 | public CharacterRange(int cp, int ccp) 9 | { 10 | this.CharacterPosition = cp; 11 | this.CharacterCount = ccp; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Doc/DocFileFormat/DrawingObjectGrid.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Doc/DocFileFormat/DrawingObjectGrid.cs -------------------------------------------------------------------------------- /Doc/DocFileFormat/FileShapeAddress.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Doc/DocFileFormat/FileShapeAddress.cs -------------------------------------------------------------------------------- /Doc/DocFileFormat/FormFieldData.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Doc/DocFileFormat/FormFieldData.cs -------------------------------------------------------------------------------- /Doc/DocFileFormat/FormattedDiskPage.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.StructuredStorage.Reader; 2 | 3 | namespace b2xtranslator.DocFileFormat 4 | { 5 | public class FormattedDiskPage 6 | { 7 | public enum FKPType 8 | { 9 | Character, 10 | Paragraph 11 | } 12 | 13 | /// 14 | /// Specifies the type of the FKP 15 | /// 16 | public FKPType Type; 17 | 18 | /// 19 | /// The WordDocument stream 20 | /// 21 | public VirtualStream WordStream; 22 | 23 | /// 24 | /// Count of runs for that FKP 25 | /// 26 | public byte crun; 27 | 28 | /// 29 | /// Each value is the limit of a paragraph or run of exception text 30 | /// 31 | public int[] rgfc; 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Doc/DocFileFormat/InvalidFileException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace b2xtranslator.DocFileFormat 4 | { 5 | public class UnspportedFileVersionException :Exception 6 | { 7 | private const string MSG = "DocFileFormat does not support .doc files that have been created with Word versions older than Word 97."; 8 | 9 | public UnspportedFileVersionException() 10 | : base(MSG) 11 | { 12 | } 13 | 14 | public UnspportedFileVersionException(string text) 15 | : base(text) 16 | { 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Doc/DocFileFormat/ListData.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Doc/DocFileFormat/ListData.cs -------------------------------------------------------------------------------- /Doc/DocFileFormat/ListLevel.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Doc/DocFileFormat/ListLevel.cs -------------------------------------------------------------------------------- /Doc/DocFileFormat/MacroData.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Doc/DocFileFormat/MacroData.cs -------------------------------------------------------------------------------- /Doc/DocFileFormat/SectionPropertyExceptions.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.CommonTranslatorLib; 2 | 3 | namespace b2xtranslator.DocFileFormat 4 | { 5 | public class SectionPropertyExceptions : PropertyExceptions 6 | { 7 | /// 8 | /// Parses the bytes to retrieve a SectionPropertyExceptions 9 | /// 10 | /// The bytes starting with the grpprl 11 | public SectionPropertyExceptions(byte[] bytes) 12 | : base(bytes) 13 | { 14 | } 15 | 16 | #region IVisitable Members 17 | 18 | public override void Convert(T mapping) 19 | { 20 | ((IMapping)mapping).Apply(this); 21 | } 22 | 23 | #endregion 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Doc/DocFileFormat/ToolbarDelta.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Doc/DocFileFormat/ToolbarDelta.cs -------------------------------------------------------------------------------- /Doc/WordprocessingMLMapping/MappingException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace b2xtranslator.WordprocessingMLMapping 4 | { 5 | public class MappingException : Exception 6 | { 7 | public MappingException(string message) 8 | : base(message) 9 | { } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Doc/b2xtranslator.doc.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | netcoreapp2.0 4 | ..\..\key.snk 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/ColorMappingAtom.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.OfficeDrawing; 2 | using System.IO; 3 | 4 | namespace b2xtranslator.PptFileFormat 5 | { 6 | [OfficeRecord(1039)] 7 | public class ColorMappingAtom : XmlStringAtom 8 | { 9 | public ColorMappingAtom(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 10 | : base(_reader, size, typeCode, version, instance) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/EndDocument.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using b2xtranslator.OfficeDrawing; 3 | 4 | namespace b2xtranslator.PptFileFormat 5 | { 6 | [OfficeRecord(1002)] 7 | class EndDocument : Record 8 | { 9 | public EndDocument(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 10 | : base(_reader, size, typeCode, version, instance) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/Exceptions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace b2xtranslator.PptFileFormat 4 | { 5 | public class InvalidStreamException : Exception 6 | { 7 | public InvalidStreamException() 8 | : base() { } 9 | 10 | public InvalidStreamException(string msg) 11 | : base(msg) { } 12 | 13 | public InvalidStreamException(string msg, Exception innerException) 14 | : base(msg, innerException) { } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/GPointAtom.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System; 4 | using System.IO; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | public class GPointAtom 9 | { 10 | public int X; 11 | public int Y; 12 | 13 | public GPointAtom(BinaryReader reader) 14 | { 15 | this.X = reader.ReadInt32(); 16 | this.Y = reader.ReadInt32(); 17 | } 18 | 19 | override public string ToString() 20 | { 21 | return string.Format("PointAtom({0}, {1})", this.X, this.Y); 22 | } 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/GRatioAtom.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System; 4 | using System.IO; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | public class GRatioAtom 9 | { 10 | public int Numer; 11 | public int Denom; 12 | 13 | public GRatioAtom(BinaryReader reader) 14 | { 15 | this.Numer = reader.ReadInt32(); 16 | this.Denom = reader.ReadInt32(); 17 | } 18 | 19 | override public string ToString() 20 | { 21 | return string.Format("RatioAtom({0}, {1})", this.Numer, this.Denom); 22 | } 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/Handout.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | [OfficeRecord(4041)] 9 | public class Handout : RegularContainer 10 | { 11 | public Handout(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 12 | : base(_reader, size, typeCode, version, instance) { } 13 | 14 | public SlidePersistAtom PersistAtom; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/ITextDataRecord.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | namespace b2xtranslator.PptFileFormat 5 | { 6 | /// 7 | /// Marker interface used for marking Records that contain text data 8 | /// that is associated with a TextHeaderAtom record. 9 | /// 10 | public interface ITextDataRecord 11 | { 12 | /// 13 | /// TextHeaderAtom corresponding to this record. 14 | /// 15 | TextHeaderAtom TextHeaderAtom 16 | { 17 | get; 18 | set; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/List.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | // Wrongly listed in documentation as 1016 9 | [OfficeRecord(2000)] 10 | public class List : RegularContainer 11 | { 12 | public List(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 13 | : base(_reader, size, typeCode, version, instance) { } 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/Note.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | [OfficeRecord(1008)] 9 | public class Note : RegularContainer 10 | { 11 | public Note(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 12 | : base(_reader, size, typeCode, version, instance) { } 13 | 14 | public SlidePersistAtom PersistAtom; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/NotesAtom.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | [OfficeRecord(1009)] 9 | public class NotesAtom : Record 10 | { 11 | public uint SlideIdRef; 12 | public ushort Flags; 13 | 14 | public NotesAtom(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 15 | : base(_reader, size, typeCode, version, instance) 16 | { 17 | this.SlideIdRef = this.Reader.ReadUInt32(); 18 | this.Flags = this.Reader.ReadUInt16(); 19 | this.Reader.ReadUInt16(); // Throw away undocumented data 20 | } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/OriginalMainMasterId.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using b2xtranslator.OfficeDrawing; 3 | using System.IO; 4 | 5 | namespace b2xtranslator.PptFileFormat 6 | { 7 | [OfficeRecord(1052)] 8 | public class OriginalMainMasterId : Record 9 | { 10 | public uint MainMasterId; 11 | 12 | public OriginalMainMasterId(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 13 | : base(_reader, size, typeCode, version, instance) 14 | { 15 | this.MainMasterId = this.Reader.ReadUInt32(); 16 | } 17 | 18 | override public string ToString(uint depth) 19 | { 20 | return string.Format("{0}\n{1}MainMasterId = {2}", 21 | base.ToString(depth), IndentationForDepth(depth + 1), 22 | this.MainMasterId); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/PPDrawing.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | [OfficeRecord(1036)] 9 | public class PPDrawing : RegularContainer 10 | { 11 | public PPDrawing(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 12 | : base(_reader, size, typeCode, version, instance) { } 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/PPDrawingGroup.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | [OfficeRecord(1035)] 9 | public class PPDrawingGroup : RegularContainer 10 | { 11 | public PPDrawingGroup(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 12 | : base(_reader, size, typeCode, version, instance) { } 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/PersistDirectoryEntry.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Ppt/PptFileFormat/PersistDirectoryEntry.cs -------------------------------------------------------------------------------- /Ppt/PptFileFormat/ProgBinaryTag.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.OfficeDrawing; 2 | using System.IO; 3 | 4 | namespace b2xtranslator.PptFileFormat 5 | { 6 | [OfficeRecord(5002)] 7 | public class ProgBinaryTag : RegularContainer 8 | { 9 | public ProgBinaryTag(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 10 | : base(_reader, size, typeCode, version, instance) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/ProgTags.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.OfficeDrawing; 2 | using System.IO; 3 | 4 | namespace b2xtranslator.PptFileFormat 5 | { 6 | [OfficeRecord(5000)] 7 | public class ProgTags : RegularContainer 8 | { 9 | public ProgTags(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 10 | : base(_reader, size, typeCode, version, instance) { 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/RoundTripCompositeMasterId12Atom.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | [OfficeRecord(1053)] 9 | public class RoundTripCompositeMasterId12Atom : Record 10 | { 11 | public uint compositeMasterId; 12 | 13 | public RoundTripCompositeMasterId12Atom(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 14 | : base(_reader, size, typeCode, version, instance) 15 | { 16 | this.compositeMasterId = this.Reader.ReadUInt32(); 17 | } 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/RoundTripContentMasterInfo12.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | [OfficeRecord(1054)] 9 | public class RoundTripContentMasterInfo12 : XmlContainer 10 | { 11 | public RoundTripContentMasterInfo12(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 12 | : base(_reader, size, typeCode, version, instance) 13 | { 14 | } 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/RoundTripOArtTextStyles12.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | [OfficeRecord(1059)] 9 | public class RoundTripOArtTextStyles12 : XmlContainer 10 | { 11 | public RoundTripOArtTextStyles12(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 12 | : base(_reader, size, typeCode, version, instance) { } 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/RoundTripShapeId12.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System; 4 | using System.IO; 5 | using b2xtranslator.OfficeDrawing; 6 | 7 | namespace b2xtranslator.PptFileFormat 8 | { 9 | [OfficeRecord(1055)] 10 | public class RoundTripShapeId12 : Record 11 | { 12 | public uint ShapeId; 13 | 14 | public RoundTripShapeId12(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 15 | : base(_reader, size, typeCode, version, instance) 16 | { 17 | this.ShapeId = this.Reader.ReadUInt32(); 18 | } 19 | 20 | override public string ToString(uint depth) 21 | { 22 | return string.Format("{0}\n{1}ShapeId = {2}", 23 | base.ToString(depth), IndentationForDepth(depth + 1), 24 | this.ShapeId); 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/TextBytesAtom.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.Text; 4 | using System.IO; 5 | using b2xtranslator.OfficeDrawing; 6 | 7 | namespace b2xtranslator.PptFileFormat 8 | { 9 | [OfficeRecord(4008)] 10 | public class TextBytesAtom : TextAtom 11 | { 12 | public static Encoding ENCODING = Encoding.GetEncoding("iso-8859-1"); 13 | 14 | public TextBytesAtom(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 15 | : base(_reader, size, typeCode, version, instance, ENCODING) { } 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/TextCFExceptionAtom.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | 9 | [OfficeRecord(4005)] 10 | public class TextPFExceptionAtom : Record 11 | { 12 | public ParagraphRun run; 13 | public TextPFExceptionAtom(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 14 | : base(_reader, size, typeCode, version, instance) 15 | { 16 | this.Reader.ReadInt16(); 17 | this.run = new ParagraphRun(this.Reader, true); 18 | } 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/TextCharsAtom.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.Text; 4 | using System.IO; 5 | using b2xtranslator.OfficeDrawing; 6 | 7 | namespace b2xtranslator.PptFileFormat 8 | { 9 | [OfficeRecord(4000)] 10 | public class TextCharsAtom : TextAtom 11 | { 12 | public static Encoding ENCODING = Encoding.Unicode; 13 | 14 | public TextCharsAtom(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 15 | : base(_reader, size, typeCode, version, instance, ENCODING) { } 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/TextPFExceptionAtom.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.IO; 4 | using b2xtranslator.OfficeDrawing; 5 | 6 | namespace b2xtranslator.PptFileFormat 7 | { 8 | 9 | [OfficeRecord(4004)] 10 | public class TextCFExceptionAtom : Record 11 | { 12 | public CharacterRun run; 13 | public TextCFExceptionAtom(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 14 | : base(_reader, size, typeCode, version, instance) 15 | { 16 | this.run = new CharacterRun(this.Reader); 17 | } 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/VBAInfoContainer.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.OfficeDrawing; 2 | using System.IO; 3 | 4 | namespace b2xtranslator.PptFileFormat 5 | { 6 | [OfficeRecord(0x03FF)] 7 | public class VBAInfoContainer : Record 8 | { 9 | public uint objStgDataRef; 10 | public uint hasMacros; 11 | public uint vbaVersion; 12 | 13 | public VBAInfoContainer(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 14 | : base(_reader, size, typeCode, version, instance) 15 | { 16 | this.objStgDataRef = System.BitConverter.ToUInt32(this.RawData, 8); 17 | this.hasMacros = System.BitConverter.ToUInt32(this.RawData, 12); 18 | this.vbaVersion = System.BitConverter.ToUInt32(this.RawData, 16); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Ppt/PptFileFormat/VbaInfoAtom.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.OfficeDrawing; 2 | using System.IO; 3 | 4 | namespace b2xtranslator.PptFileFormat 5 | { 6 | [OfficeRecord(0x0400)] 7 | public class VbaInfoAtom: Record 8 | { 9 | public uint persistIdRef; 10 | 11 | public bool fHasMacros; 12 | 13 | public uint version; 14 | 15 | public VbaInfoAtom(BinaryReader _reader, uint size, uint typeCode, uint version, uint instance) 16 | : base(_reader, size, typeCode, version, instance) 17 | { 18 | this.persistIdRef = _reader.ReadUInt32(); 19 | this.fHasMacros = Tools.Utils.ByteToBool((byte)_reader.ReadUInt32()); 20 | this.version = _reader.ReadUInt32(); 21 | } 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /Ppt/PresentationMLMapping/Defaults/clrMap.xml: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /Ppt/PresentationMLMapping/PresentationMapping.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using b2xtranslator.CommonTranslatorLib; 4 | using b2xtranslator.OpenXmlLib; 5 | using System.Xml; 6 | 7 | namespace b2xtranslator.PresentationMLMapping 8 | { 9 | public abstract class PresentationMapping : 10 | AbstractOpenXmlMapping, 11 | IMapping 12 | where T : IVisitable 13 | { 14 | protected ConversionContext _ctx; 15 | public ContentPart targetPart; 16 | 17 | public PresentationMapping(ConversionContext ctx, ContentPart targetPart) 18 | : base(XmlWriter.Create(targetPart.GetStream(), ctx.WriterSettings)) 19 | { 20 | this._ctx = ctx; 21 | this.targetPart = targetPart; 22 | } 23 | 24 | public abstract void Apply(T mapElement); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Ppt/PresentationMLMapping/TextMapping.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Ppt/PresentationMLMapping/TextMapping.cs -------------------------------------------------------------------------------- /Ppt/PresentationMLMapping/Utils.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Ppt/PresentationMLMapping/Utils.cs -------------------------------------------------------------------------------- /Ppt/PresentationMLMapping/VbaProjectMapping.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.CommonTranslatorLib; 2 | using b2xtranslator.PptFileFormat; 3 | using b2xtranslator.OpenXmlLib; 4 | 5 | namespace b2xtranslator.PresentationMLMapping 6 | { 7 | public class VbaProjectMapping : AbstractOpenXmlMapping, 8 | IMapping 9 | { 10 | private VbaProjectPart _targetPart; 11 | 12 | public VbaProjectMapping(VbaProjectPart targetPart) 13 | : base(null) 14 | { 15 | this._targetPart = targetPart; 16 | } 17 | 18 | public void Apply(ExOleObjStgAtom vbaProject) 19 | { 20 | var bytes = vbaProject.DecompressData(); 21 | this._targetPart.GetStream().Write(bytes, 0, bytes.Length); 22 | 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Ppt/b2xtranslator.ppt.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | netcoreapp2.0 4 | ..\..\key.snk 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Shell/doc2x/doc2x.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | Exe 4 | netcoreapp2.0 5 | ..\..\key.snk 6 | doc2x.ico 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Shell/doc2x/doc2x.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Shell/doc2x/doc2x.ico -------------------------------------------------------------------------------- /Shell/ppt2x/ppt2x.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | Exe 4 | netcoreapp2.0 5 | ..\..\key.snk 6 | ppt2x.ico 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Shell/ppt2x/ppt2x.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Shell/ppt2x/ppt2x.ico -------------------------------------------------------------------------------- /Shell/xls2x/xls2x.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | Exe 4 | netcoreapp2.0 5 | ..\..\key.snk 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /UnitTests/Config.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /UnitTests/Microsoft.Office.Interop.Word.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/UnitTests/Microsoft.Office.Interop.Word.dll -------------------------------------------------------------------------------- /UnitTests/files/simple.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/UnitTests/files/simple.doc -------------------------------------------------------------------------------- /UnitTests/files/simple.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/UnitTests/files/simple.docx -------------------------------------------------------------------------------- /UnitTests/files/simple.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/UnitTests/files/simple.xls -------------------------------------------------------------------------------- /Xls/SpreadsheetMLMapping/ChartMapping/AbstractAxisMapping.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.CommonTranslatorLib; 4 | using b2xtranslator.OpenXmlLib.DrawingML; 5 | using b2xtranslator.Spreadsheet.XlsFileFormat; 6 | 7 | namespace b2xtranslator.SpreadsheetMLMapping 8 | { 9 | public abstract class AbstractAxisMapping : AbstractChartMapping, 10 | IMapping 11 | { 12 | public AbstractAxisMapping(ExcelContext workbookContext, ChartContext chartContext) 13 | : base(workbookContext, chartContext) 14 | { 15 | } 16 | 17 | #region IMapping Members 18 | 19 | public virtual void Apply(AxesSequence axesSequence) 20 | { 21 | // EG_AxShared 22 | writeValueElement(Dml.Chart.ElAxId, axesSequence.IvAxisSequence.Axis.AxisId.ToString()); 23 | } 24 | 25 | #endregion 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Xls/SpreadsheetMLMapping/ExcelMapping.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | using System.Xml; 4 | using b2xtranslator.CommonTranslatorLib; 5 | using b2xtranslator.OpenXmlLib; 6 | using b2xtranslator.Spreadsheet.XlsFileFormat; 7 | 8 | 9 | namespace b2xtranslator.SpreadsheetMLMapping 10 | { 11 | public abstract class ExcelMapping : 12 | AbstractOpenXmlMapping, 13 | IMapping 14 | { 15 | protected XlsDocument xls; 16 | protected ExcelContext xlscon; 17 | 18 | public ExcelMapping(ExcelContext xlscon, OpenXmlPart targetPart) 19 | : base(XmlWriter.Create(targetPart.GetStream(), xlscon.WriterSettings)) 20 | { 21 | this.xlscon = xlscon; 22 | } 23 | 24 | public abstract void Apply(XlsDocument xls); 25 | } 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/BiffRecordAttribute.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using System; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 6 | { 7 | /// 8 | /// Used for mapping Office record TypeCodes to the classes implementing them. 9 | /// 10 | [AttributeUsage(AttributeTargets.Class)] 11 | public class BiffRecordAttribute : Attribute 12 | { 13 | public BiffRecordAttribute() { } 14 | 15 | public BiffRecordAttribute(params RecordType[] typecodes) 16 | { 17 | this._typeCodes = typecodes; 18 | } 19 | 20 | public RecordType[] TypeCodes 21 | { 22 | get { return this._typeCodes; } 23 | } 24 | 25 | private RecordType[] _typeCodes = new RecordType[0]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/ChartSequences/AiSequence.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.Spreadsheet.XlsFileFormat.Records; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 5 | { 6 | public class AiSequence : BiffRecordSequence 7 | { 8 | public BRAI BRAI; 9 | 10 | public SeriesText SeriesText; 11 | 12 | public AiSequence(IStreamReader reader) 13 | : base(reader) 14 | { 15 | //AI = BRAI [SeriesText] 16 | 17 | //BRAI 18 | this.BRAI = (BRAI)BiffRecord.ReadRecord(reader); 19 | 20 | //[SeriesText] 21 | if (BiffRecord.GetNextRecordType(reader) == RecordType.SeriesText) 22 | { 23 | this.SeriesText = (SeriesText)BiffRecord.ReadRecord(reader); 24 | } 25 | 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/ChartSequences/DatSequence.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.Spreadsheet.XlsFileFormat.Records; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 5 | { 6 | public class DatSequence : BiffRecordSequence 7 | { 8 | public Dat Dat; 9 | public Begin Begin; 10 | public LdSequence LdSequence; 11 | public End End; 12 | 13 | public DatSequence(IStreamReader reader) 14 | : base(reader) 15 | { 16 | // DAT = Dat Begin LD End 17 | 18 | this.Dat = (Dat)BiffRecord.ReadRecord(reader); 19 | this.Begin = (Begin)BiffRecord.ReadRecord(reader); 20 | this.LdSequence = new LdSequence(reader); 21 | this.End = (End)BiffRecord.ReadRecord(reader); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/ChartSequences/DataSheetSequence.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.StructuredStorage.Reader; 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 4 | { 5 | public class DataSheetSequence : BiffRecordSequence 6 | { 7 | public DataSheetSequence(IStreamReader reader) 8 | : base(reader) 9 | { 10 | // 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/ChartSequences/OfficeGraphBiffRecordSequence.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.StructuredStorage.Reader; 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 4 | { 5 | public class BiffRecordSequence 6 | { 7 | IStreamReader _reader; 8 | public IStreamReader Reader 9 | { 10 | get { return this._reader; } 11 | set { this._reader = value; } 12 | } 13 | 14 | public BiffRecordSequence(IStreamReader reader) 15 | { 16 | this._reader = reader; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/ChartSequences/PicfSequence.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.Spreadsheet.XlsFileFormat.Records; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 5 | { 6 | public class PicfSequence : BiffRecordSequence 7 | { 8 | public Begin Begin; 9 | 10 | public PicF PicF; 11 | 12 | public End End; 13 | 14 | public PicfSequence(IStreamReader reader) 15 | : base(reader) 16 | { 17 | // PICF = Begin PicF End 18 | 19 | // Begin 20 | this.Begin = (Begin)BiffRecord.ReadRecord(reader); 21 | 22 | // PicF 23 | this.PicF = (PicF)BiffRecord.ReadRecord(reader); 24 | 25 | // End 26 | this.End = (End)BiffRecord.ReadRecord(reader); 27 | 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/DataContainer/BlankCell.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.DataContainer 2 | { 3 | /// 4 | /// This class stores data from empty cells 5 | /// this is necessary for the merge cell records 6 | /// 7 | public class BlankCell : AbstractCellData 8 | { 9 | /// 10 | /// Returns nothing it is only the overridden method for this class 11 | /// 12 | /// Nothing / empty string 13 | public override string getValue() 14 | { 15 | return ""; 16 | } 17 | 18 | /// 19 | /// 20 | /// 21 | /// 22 | public override void setValue(object obj) 23 | { 24 | /// do nothing ;) 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/DataContainer/CRNData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using b2xtranslator.Spreadsheet.XlsFileFormat.Records; 4 | 5 | 6 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.DataContainer 7 | { 8 | /// 9 | /// This class contains several information about the CRN BIFF Record 10 | /// 11 | /// 12 | public class CRNData 13 | { 14 | public byte colLast; 15 | public byte colFirst; 16 | 17 | public ushort rw; 18 | 19 | public List oper; 20 | 21 | public CRNData(CRN crn) 22 | { 23 | this.colFirst = crn.colFirst; 24 | this.colLast = crn.colLast; 25 | this.rw = crn.rw; 26 | this.oper = crn.oper; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/DataContainer/ChartSheetData.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.CommonTranslatorLib; 2 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 3 | { 4 | public class ChartSheetData : SheetData 5 | { 6 | public ChartSheetSequence ChartSheetSequence; 7 | 8 | public ChartSheetData() 9 | { 10 | } 11 | 12 | public override void Convert(T mapping) 13 | { 14 | ((IMapping)mapping).Apply(this.ChartSheetSequence); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/DataContainer/ColumnInfoData.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.DataContainer 2 | { 3 | public class ColumnInfoData 4 | { 5 | 6 | public int min; 7 | public int max; 8 | 9 | public int widht; 10 | public bool customWidth; 11 | 12 | public bool hidden; 13 | public bool bestFit; 14 | public bool phonetic; 15 | 16 | public int outlineLevel; 17 | 18 | public bool collapsed; 19 | 20 | public int style; 21 | 22 | 23 | public ColumnInfoData() 24 | { 25 | this.min = 0; 26 | this.max = 0; 27 | this.widht = 0; 28 | 29 | this.outlineLevel = 0; 30 | this.style = 0; 31 | } 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/DataContainer/HyperlinkData.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.DataContainer 2 | { 3 | public class HyperlinkData 4 | { 5 | public ushort rwFirst; 6 | public ushort rwLast; 7 | public ushort colFirst; 8 | public ushort colLast; 9 | 10 | public string url; 11 | 12 | // internal links 13 | public string location; 14 | public string display; 15 | 16 | public bool absolute; 17 | public HyperlinkData() 18 | { 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/DataContainer/NumberCell.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.DataContainer 5 | { 6 | /// 7 | /// Class stores data from a NUMBER Biffrecord 8 | /// 9 | public class NumberCell : AbstractCellData 10 | { 11 | /// 12 | /// Value from the cell 13 | /// 14 | private double value; 15 | 16 | 17 | public override string getValue() 18 | { 19 | return Convert.ToString(this.value, CultureInfo.GetCultureInfo("en-US")); 20 | } 21 | 22 | public override void setValue(object obj) 23 | { 24 | if (obj is double) 25 | { 26 | this.value = (double)obj; 27 | } 28 | } 29 | 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/DataContainer/SheetData.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.CommonTranslatorLib; 2 | using b2xtranslator.Spreadsheet.XlsFileFormat.Records; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 5 | { 6 | public abstract class SheetData : IVisitable 7 | { 8 | public BoundSheet8 boundsheetRecord; 9 | 10 | // this value is used for the case that the converter adds the 11 | // chartview sheets as emty sheets 12 | // TODO: remove 13 | public bool emtpyWorksheet; 14 | 15 | 16 | public abstract void Convert(T mapping); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/DataContainer/XTIData.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.DataContainer 2 | { 3 | 4 | /// 5 | /// 6 | /// 7 | /// 8 | public class XTIData 9 | { 10 | public int RecordType; 11 | public int externalBookNumber; 12 | public int externalSheetNumber; 13 | 14 | public XTIData(int record, int book, int sheet) 15 | { 16 | this.RecordType = record; 17 | this.externalBookNumber = book; 18 | this.externalSheetNumber = sheet; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Exception/RecordParseException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 4 | { 5 | [Serializable] 6 | public class RecordParseException : Exception 7 | { 8 | public RecordParseException(BiffRecord record) 9 | : base(string.Format("Error parsing BIFF record with id {0:X02}h at stream offset {1}", record.Id, record.Offset)) 10 | { 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgAdd.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.StructuredStorage.Reader; 2 | using System.Diagnostics; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgAdd : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgAdd; 9 | 10 | public PtgAdd(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "+"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgAreaErr.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgAreaErr : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgAreaErr; 9 | 10 | public PtgAreaErr(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 9; 16 | this.Data = ""; 17 | this.type = PtgType.Operand; 18 | reader.ReadBytes(8); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgAreaErr3d.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgAreaErr3d : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgAreaErr3d; 9 | public ushort ixti; 10 | 11 | public PtgAreaErr3d(IStreamReader reader, PtgNumber ptgid) 12 | : 13 | base(reader, ptgid) 14 | { 15 | Debug.Assert(this.Id == ID); 16 | this.Length = 11; 17 | this.Data = "#REF!"; 18 | this.type = PtgType.Operand; 19 | this.ixti = reader.ReadUInt16(); 20 | reader.ReadBytes(8); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgAttrGoto.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgAttrGoto : AbstractPtg 7 | { 8 | public const Ptg0x19Sub ID = Ptg0x19Sub.PtgAttrGoto; 9 | 10 | public PtgAttrGoto(IStreamReader reader, Ptg0x19Sub ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert((Ptg0x19Sub)this.Id == ID); 15 | this.Length = 4; 16 | this.Data = "Goto"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 1; 19 | this.Reader.ReadBytes(2); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgAttrIf.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgAttrIf : AbstractPtg 7 | { 8 | public const Ptg0x19Sub ID = Ptg0x19Sub.PtgAttrIf; 9 | 10 | public PtgAttrIf(IStreamReader reader, Ptg0x19Sub ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert((Ptg0x19Sub)this.Id == ID); 15 | this.Length = 4; 16 | this.Data = "IF"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 1; 19 | this.Reader.ReadBytes(2); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgAttrSemi.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgAttrSemi : AbstractPtg 7 | { 8 | public const Ptg0x19Sub ID = Ptg0x19Sub.PtgAttrSemi; 9 | 10 | public PtgAttrSemi(IStreamReader reader, Ptg0x19Sub ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert((Ptg0x19Sub)this.Id == ID); 15 | this.Length = 4; 16 | this.Data = "Semi"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 1; 19 | this.Reader.ReadBytes(2); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgAttrSpace.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgAttrSpace : AbstractPtg 7 | { 8 | public const Ptg0x19Sub ID = Ptg0x19Sub.PtgAttrSpace; 9 | 10 | public PtgAttrSpace(IStreamReader reader, Ptg0x19Sub ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert((Ptg0x19Sub)this.Id == ID); 15 | this.Length = 4; 16 | this.Data = "Space"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 1; 19 | this.Reader.ReadBytes(2); 20 | } 21 | } 22 | } 23 | 24 | 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgAttrSum.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgAttrSum : AbstractPtg 7 | { 8 | public const Ptg0x19Sub ID = Ptg0x19Sub.PtgAttrSum; 9 | 10 | public PtgAttrSum(IStreamReader reader, Ptg0x19Sub ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert((Ptg0x19Sub)this.Id == ID); 15 | this.Length = 4; 16 | this.Data = "SUM"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 1; 19 | this.Reader.ReadBytes(2); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgBool.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgBool : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgBool; 9 | 10 | public PtgBool(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | byte value = this.Reader.ReadByte(); 16 | if ((int)value == 0) 17 | { 18 | this.Data = "FALSE"; 19 | } 20 | else 21 | { 22 | this.Data = "TRUE"; 23 | } 24 | this.Length = 2; 25 | this.type = PtgType.Operator; 26 | this.popSize = 1; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgConcat.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgConcat : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgConcat; 9 | 10 | public PtgConcat(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "&"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgDiv.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgDiv : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgDiv; 9 | 10 | public PtgDiv(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "/"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgEq.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgEq : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgEq; 9 | 10 | public PtgEq(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "="; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgExp.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgExp : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgExp; 9 | 10 | public ushort rw; 11 | public ushort col; 12 | 13 | public PtgExp(IStreamReader reader, PtgNumber ptgid) 14 | : 15 | base(reader, ptgid) 16 | { 17 | Debug.Assert(this.Id == ID); 18 | this.Length = 5; 19 | this.Data = ""; 20 | this.type = PtgType.Operator; 21 | this.popSize = 1; 22 | this.rw = this.Reader.ReadUInt16(); 23 | this.col = this.Reader.ReadUInt16(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgFunc.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 6 | { 7 | public class PtgFunc : AbstractPtg 8 | { 9 | public const PtgNumber ID = PtgNumber.PtgFunc; 10 | public ushort tab; 11 | 12 | 13 | public PtgFunc(IStreamReader reader, PtgNumber ptgid) 14 | : 15 | base(reader, ptgid) 16 | { 17 | Debug.Assert(this.Id == ID); 18 | this.Length = 3; 19 | this.Data = ""; 20 | this.type = PtgType.Operator; 21 | this.tab = this.Reader.ReadUInt16(); 22 | this.popSize = 1; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgGe.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgGe : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgGe; 9 | 10 | public PtgGe(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = ">="; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgGt.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgGt : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgGt; 9 | 10 | public PtgGt(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = ">"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgInt.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgInt: AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgInt; 9 | 10 | public PtgInt(IStreamReader reader, PtgNumber ptgid) : 11 | base(reader,ptgid) 12 | { 13 | Debug.Assert(this.Id == ID); 14 | this.Length = 3; 15 | this.Data = reader.ReadUInt16().ToString(); 16 | 17 | this.type = PtgType.Operand; 18 | this.popSize = 1; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgIsect.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgIsect : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgIsect; 9 | 10 | public PtgIsect(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = " "; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgLe.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgLe : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgLe; 9 | 10 | public PtgLe(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "<="; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgLt.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgLt : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgLt; 9 | 10 | public PtgLt(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "<"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgMemErr.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgMemErr : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgMemErr; 9 | 10 | public PtgMemErr(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 7; 16 | 17 | this.Reader.ReadBytes(6); 18 | 19 | this.type = PtgType.Operand; 20 | this.popSize = 1; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgMissArg.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgMissArg : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgMissArg; 9 | 10 | public PtgMissArg(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = " "; 17 | this.type = PtgType.Operand; 18 | this.popSize = 1; 19 | } 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgMul.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgMul : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgMul; 9 | 10 | public PtgMul(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "*"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgName.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgName : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgName; 9 | 10 | public int nameindex; 11 | 12 | public PtgName(IStreamReader reader, PtgNumber ptgid) 13 | : 14 | base(reader, ptgid) 15 | { 16 | Debug.Assert(this.Id == ID); 17 | this.Length = 5; 18 | this.Data = ""; 19 | this.type = PtgType.Operator; 20 | this.popSize = 1; 21 | this.nameindex = this.Reader.ReadInt32(); 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgNameX.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgNameX : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgNameX; 9 | 10 | public ushort ixti; 11 | public uint nameindex; 12 | 13 | public PtgNameX(IStreamReader reader, PtgNumber ptgid) 14 | : 15 | base(reader, ptgid) 16 | { 17 | Debug.Assert(this.Id == ID); 18 | this.Length = 7; 19 | this.Data = ""; 20 | this.type = PtgType.Operator; 21 | this.popSize = 1; 22 | this.ixti = this.Reader.ReadUInt16(); 23 | this.nameindex = this.Reader.ReadUInt32(); 24 | } 25 | } 26 | } 27 | 28 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgNe.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgNe : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgNe; 9 | 10 | public PtgNe(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "<>"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgNotDocumented.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgNotDocumented : AbstractPtg 7 | { 8 | public const Ptg0x19Sub ID = Ptg0x19Sub.PtgNotDocumented; 9 | 10 | public PtgNotDocumented(IStreamReader reader, Ptg0x19Sub ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert((Ptg0x19Sub)this.Id == ID); 15 | this.Length = 4; 16 | this.Data = "NotDocumented"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 1; 19 | this.Reader.ReadBytes(2); 20 | } 21 | } 22 | } 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgNum.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Globalization; 4 | using b2xtranslator.StructuredStorage.Reader; 5 | 6 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 7 | { 8 | public class PtgNum : AbstractPtg 9 | { 10 | public const PtgNumber ID = PtgNumber.PtgNum; 11 | 12 | public PtgNum(IStreamReader reader, PtgNumber ptgid) 13 | : 14 | base(reader, ptgid) 15 | { 16 | Debug.Assert(this.Id == ID); 17 | this.Length = 9; 18 | this.Data = Convert.ToString(this.Reader.ReadDouble(), CultureInfo.GetCultureInfo("en-US")); 19 | 20 | this.type = PtgType.Operand; 21 | this.popSize = 1; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgParen.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgParen : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgParen; 9 | 10 | public PtgParen(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.type = PtgType.Operator; 17 | this.popSize = 1; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgPercent.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgPercent : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgPercent; 9 | 10 | public PtgPercent(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.type = PtgType.Operator; 17 | this.popSize = 1; 18 | this.Data = "%"; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgPower.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgPower : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgPower; 9 | 10 | public PtgPower(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "^"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgRefErr.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgRefErr : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgRefErr; 9 | 10 | public PtgRefErr(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 5; 16 | this.Data = "#REF!"; 17 | this.type = PtgType.Operand; 18 | reader.ReadBytes(4); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgRefErr3d.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgRefErr3d : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgRefErr3d; 9 | public ushort ixti; 10 | 11 | public PtgRefErr3d(IStreamReader reader, PtgNumber ptgid) 12 | : 13 | base(reader, ptgid) 14 | { 15 | Debug.Assert(this.Id == ID); 16 | this.Length = 7; 17 | this.Data = "#REF!"; 18 | this.type = PtgType.Operand; 19 | this.ixti = reader.ReadUInt16(); 20 | reader.ReadBytes(4); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgSub.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgSub : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgSub; 9 | 10 | 11 | public PtgSub(IStreamReader reader, PtgNumber ptgid) 12 | : 13 | base(reader, ptgid) 14 | { 15 | Debug.Assert(this.Id == ID); 16 | this.Length = 1; 17 | this.Data = "-"; 18 | this.type = PtgType.Operator; 19 | this.popSize = 2; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgUminus.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgUminus : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgUminus; 9 | 10 | public PtgUminus(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "-"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 1; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgUnion.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgUnion : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgUnion; 9 | 10 | public PtgUnion(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = ","; 17 | this.type = PtgType.Operator; 18 | this.popSize = 2; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Ptg/PtgUplus.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Ptg 5 | { 6 | public class PtgUplus : AbstractPtg 7 | { 8 | public const PtgNumber ID = PtgNumber.PtgUplus; 9 | 10 | public PtgUplus(IStreamReader reader, PtgNumber ptgid) 11 | : 12 | base(reader, ptgid) 13 | { 14 | Debug.Assert(this.Id == ID); 15 | this.Length = 1; 16 | this.Data = "+"; 17 | this.type = PtgType.Operator; 18 | this.popSize = 1; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Addin.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 2 | { 3 | // TODO: No longer used 4 | //[BiffRecordAttribute(RecordType.ADDIN)] 5 | //public class ADDIN : BiffRecord 6 | //{ 7 | // public const RecordType ID = RecordType.ADDIN; 8 | 9 | // public ADDIN(IStreamReader reader, RecordType id, UInt16 length) 10 | // : base(reader, id, length) 11 | // { 12 | // // assert that the correct record type is instantiated 13 | // Debug.Assert(this.Id == ID); 14 | 15 | // // initialize class members from stream 16 | // // TODO: place code here 17 | 18 | // // assert that the correct number of bytes has been read from the stream 19 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 20 | // } 21 | //} 22 | } 23 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Addmenu.cs: -------------------------------------------------------------------------------- 1 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 2 | { 3 | // TODO: no longer used 4 | //[BiffRecordAttribute(RecordType.ADDMENU)] 5 | //public class ADDMENU : BiffRecord 6 | //{ 7 | // public const RecordType ID = RecordType.ADDMENU; 8 | 9 | // public ADDMENU(IStreamReader reader, RecordType id, UInt16 length) 10 | // : base(reader, id, length) 11 | // { 12 | // // assert that the correct record type is instantiated 13 | // Debug.Assert(this.Id == ID); 14 | 15 | // // initialize class members from stream 16 | // // TODO: place code here 17 | 18 | // // assert that the correct number of bytes has been read from the stream 19 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 20 | // } 21 | //} 22 | } 23 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/BottomMargin.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 5 | { 6 | [BiffRecord(RecordType.BottomMargin)] 7 | public class BottomMargin : BiffRecord 8 | { 9 | public const RecordType ID = RecordType.BottomMargin; 10 | public double value; 11 | 12 | public BottomMargin(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | this.value = reader.ReadDouble(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/CF.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 5 | { 6 | [BiffRecord(RecordType.CF)] 7 | public class CF : BiffRecord 8 | { 9 | public const RecordType ID = RecordType.CF; 10 | 11 | public CF(IStreamReader reader, RecordType id, ushort length) 12 | : base(reader, id, length) 13 | { 14 | // assert that the correct record type is instantiated 15 | Debug.Assert(this.Id == ID); 16 | 17 | // initialize class members from stream 18 | // TODO: place code here 19 | 20 | // assert that the correct number of bytes has been read from the stream 21 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/CF12.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 5 | { 6 | [BiffRecord(RecordType.CF12)] 7 | public class CF12 : BiffRecord 8 | { 9 | public const RecordType ID = RecordType.CF12; 10 | 11 | public CF12(IStreamReader reader, RecordType id, ushort length) 12 | : base(reader, id, length) 13 | { 14 | // assert that the correct record type is instantiated 15 | Debug.Assert(this.Id == ID); 16 | 17 | // initialize class members from stream 18 | // TODO: place code here 19 | 20 | // assert that the correct number of bytes has been read from the stream 21 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/CFEx.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using b2xtranslator.StructuredStorage.Reader; 3 | 4 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 5 | { 6 | [BiffRecord(RecordType.CFEx)] 7 | public class CFEx : BiffRecord 8 | { 9 | public const RecordType ID = RecordType.CFEx; 10 | 11 | public CFEx(IStreamReader reader, RecordType id, ushort length) 12 | : base(reader, id, length) 13 | { 14 | // assert that the correct record type is instantiated 15 | Debug.Assert(this.Id == ID); 16 | 17 | // initialize class members from stream 18 | // TODO: place code here 19 | 20 | // assert that the correct number of bytes has been read from the stream 21 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/CrErr.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.CrErr)] 8 | public class CrErr : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.CrErr; 11 | 12 | public CrErr(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/DCon.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.DCon)] 8 | public class DCon : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.DCon; 11 | 12 | public DCon(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/DConn.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.DConn)] 8 | public class DConn : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.DConn; 11 | 12 | public DConn(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/DELMENU.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 4 | { 5 | // TODO: no longer used 6 | //[BiffRecordAttribute(RecordType.DELMENU)] 7 | //public class DELMENU : BiffRecord 8 | //{ 9 | // public const RecordType ID = RecordType.DELMENU; 10 | 11 | // public DELMENU(IStreamReader reader, RecordType id, UInt16 length) 12 | // : base(reader, id, length) 13 | // { 14 | // // assert that the correct record type is instantiated 15 | // Debug.Assert(this.Id == ID); 16 | 17 | // // initialize class members from stream 18 | // // TODO: place code here 19 | 20 | // // assert that the correct number of bytes has been read from the stream 21 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | // } 23 | //} 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/DVal.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.DVal)] 8 | public class DVal : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.DVal; 11 | 12 | public DVal(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/DXF.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.DXF)] 8 | public class DXF : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.DXF; 11 | 12 | public DXF(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Dv.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.Dv)] 8 | public class Dv : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.Dv; 11 | 12 | public Dv(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/EDG.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 4 | { 5 | // TODO: no longer used? 6 | //[BiffRecordAttribute(RecordType.EDG)] 7 | //public class EDG : BiffRecord 8 | //{ 9 | // public const RecordType ID = RecordType.EDG; 10 | 11 | // public EDG(IStreamReader reader, RecordType id, UInt16 length) 12 | // : base(reader, id, length) 13 | // { 14 | // // assert that the correct record type is instantiated 15 | // Debug.Assert(this.Id == ID); 16 | 17 | // // initialize class members from stream 18 | // // TODO: place code here 19 | 20 | // // assert that the correct number of bytes has been read from the stream 21 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | // } 23 | //} 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/EOF.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.EOF)] 8 | public class EOF : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.EOF; 11 | 12 | public EOF(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/FMQRY.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 4 | { 5 | // TODO: no longer used 6 | //[BiffRecordAttribute(RecordType.FMQRY)] 7 | //public class FMQRY : BiffRecord 8 | //{ 9 | // public const RecordType ID = RecordType.FMQRY; 10 | 11 | // public FMQRY(IStreamReader reader, RecordType id, UInt16 length) 12 | // : base(reader, id, length) 13 | // { 14 | // // assert that the correct record type is instantiated 15 | // Debug.Assert(this.Id == ID); 16 | 17 | // // initialize class members from stream 18 | // // TODO: place code here 19 | 20 | // // assert that the correct number of bytes has been read from the stream 21 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | // } 23 | //} 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/FMSQRY.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 4 | { 5 | // TODO: no longer used? 6 | //[BiffRecordAttribute(RecordType.FMSQRY)] 7 | //public class FMSQRY : BiffRecord 8 | //{ 9 | // public const RecordType ID = RecordType.FMSQRY; 10 | 11 | // public FMSQRY(IStreamReader reader, RecordType id, UInt16 length) 12 | // : base(reader, id, length) 13 | // { 14 | // // assert that the correct record type is instantiated 15 | // Debug.Assert(this.Id == ID); 16 | 17 | // // initialize class members from stream 18 | // // TODO: place code here 19 | 20 | // // assert that the correct number of bytes has been read from the stream 21 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | // } 23 | //} 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Feat.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.Feat)] 8 | public class Feat : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.Feat; 11 | 12 | public Feat(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/GCW.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 4 | { 5 | // TODO: no longer used? 6 | //[BiffRecordAttribute(RecordType.GCW)] 7 | //public class GCW : BiffRecord 8 | //{ 9 | // public const RecordType ID = RecordType.GCW; 10 | 11 | // public GCW(IStreamReader reader, RecordType id, UInt16 length) 12 | // : base(reader, id, length) 13 | // { 14 | // // assert that the correct record type is instantiated 15 | // Debug.Assert(this.Id == ID); 16 | 17 | // // initialize class members from stream 18 | // // TODO: place code here 19 | 20 | // // assert that the correct number of bytes has been read from the stream 21 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | // } 23 | //} 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Guts.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.Guts)] 8 | public class Guts : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.Guts; 11 | 12 | public Guts(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/LNEXT.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 4 | { 5 | // TODO: no longer used? 6 | //[BiffRecordAttribute(RecordType.LNEXT)] 7 | //public class LNEXT : BiffRecord 8 | //{ 9 | // public const RecordType ID = RecordType.LNEXT; 10 | 11 | // public LNEXT(IStreamReader reader, RecordType id, UInt16 length) 12 | // : base(reader, id, length) 13 | // { 14 | // // assert that the correct record type is instantiated 15 | // Debug.Assert(this.Id == ID); 16 | 17 | // // initialize class members from stream 18 | // // TODO: place code here 19 | 20 | // // assert that the correct number of bytes has been read from the stream 21 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | // } 23 | //} 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/LPr.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.LPr)] 8 | public class LPr : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.LPr; 11 | 12 | public LPr(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/LeftMargin.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.LeftMargin)] 8 | public class LeftMargin : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.LeftMargin; 11 | 12 | public double value; 13 | 14 | public LeftMargin(IStreamReader reader, RecordType id, ushort length) 15 | : base(reader, id, length) 16 | { 17 | // assert that the correct record type is instantiated 18 | Debug.Assert(this.Id == ID); 19 | 20 | this.value = reader.ReadDouble(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/MDB.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.MDB)] 8 | public class MDB : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.MDB; 11 | 12 | public MDB(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Note.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.Note)] 8 | public class Note : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.Note; 11 | 12 | public Note(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/PUB.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 4 | { 5 | // TODO: no longer used? 6 | //[BiffRecordAttribute(RecordType.PUB)] 7 | //public class PUB : BiffRecord 8 | //{ 9 | // public const RecordType ID = RecordType.PUB; 10 | 11 | // public PUB(IStreamReader reader, RecordType id, UInt16 length) 12 | // : base(reader, id, length) 13 | // { 14 | // // assert that the correct record type is instantiated 15 | // Debug.Assert(this.Id == ID); 16 | 17 | // // initialize class members from stream 18 | // // TODO: place code here 19 | 20 | // // assert that the correct number of bytes has been read from the stream 21 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | // } 23 | //} 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Qsi.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.Qsi)] 8 | public class Qsi : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.Qsi; 11 | 12 | public Qsi(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Qsif.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.Qsif)] 8 | public class Qsif : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.Qsif; 11 | 12 | public Qsif(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Qsir.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.Qsir)] 8 | public class Qsir : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.Qsir; 11 | 12 | public Qsir(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/RightMargin.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.RightMargin)] 8 | public class RightMargin : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.RightMargin; 11 | public double value; 12 | 13 | public RightMargin(IStreamReader reader, RecordType id, ushort length) 14 | : base(reader, id, length) 15 | { 16 | // assert that the correct record type is instantiated 17 | Debug.Assert(this.Id == ID); 18 | 19 | this.value = reader.ReadDouble(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SOUND.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 4 | { 5 | // TODO: no longer needed? 6 | //[BiffRecordAttribute(RecordType.SOUND)] 7 | //public class SOUND : BiffRecord 8 | //{ 9 | // public const RecordType ID = RecordType.SOUND; 10 | 11 | // public SOUND(IStreamReader reader, RecordType id, UInt16 length) 12 | // : base(reader, id, length) 13 | // { 14 | // // assert that the correct record type is instantiated 15 | // Debug.Assert(this.Id == ID); 16 | 17 | // // initialize class members from stream 18 | // // TODO: place code here 19 | 20 | // // assert that the correct number of bytes has been read from the stream 21 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | // } 23 | //} 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SUB.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 4 | { 5 | // TODO: No longer used 6 | //[BiffRecordAttribute(RecordType.SUB)] 7 | //public class SUB : BiffRecord 8 | //{ 9 | // public const RecordType ID = RecordType.SUB; 10 | 11 | // public SUB(IStreamReader reader, RecordType id, UInt16 length) 12 | // : base(reader, id, length) 13 | // { 14 | // // assert that the correct record type is instantiated 15 | // Debug.Assert(this.Id == ID); 16 | 17 | // // initialize class members from stream 18 | // // TODO: place code here 19 | 20 | // // assert that the correct number of bytes has been read from the stream 21 | // Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 22 | // } 23 | //} 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SXDB.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.SXDB)] 8 | public class SXDB : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.SXDB; 11 | 12 | public SXDB(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SXDI.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.SXDI)] 8 | public class SXDI : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.SXDI; 11 | 12 | public SXDI(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SXEx.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.SXEx)] 8 | public class SXEx : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.SXEx; 11 | 12 | public SXEx(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SXLI.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.SXLI)] 8 | public class SXLI : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.SXLI; 11 | 12 | public SXLI(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SXPI.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.SXPI)] 8 | public class SXPI : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.SXPI; 11 | 12 | public SXPI(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SXTH.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.SXTH)] 8 | public class SXTH : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.SXTH; 11 | 12 | public SXTH(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SXVI.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.SXVI)] 8 | public class SXVI : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.SXVI; 11 | 12 | public SXVI(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/SXVS.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.SXVS)] 8 | public class SXVS : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.SXVS; 11 | 12 | public SXVS(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Sort.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.Sort)] 8 | public class Sort : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.Sort; 11 | 12 | public Sort(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Style.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Xls/XlsFileFormat/Records/Style.cs -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/StyleExt.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Xls/XlsFileFormat/Records/StyleExt.cs -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Sxvd.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.Sxvd)] 8 | public class Sxvd : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.Sxvd; 11 | 12 | public Sxvd(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/TopMargin.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.TopMargin)] 8 | public class TopMargin : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.TopMargin; 11 | public double value; 12 | public TopMargin(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | this.value = reader.ReadDouble(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/TxO.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Xls/XlsFileFormat/Records/TxO.cs -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/UnknownBiffRecord.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat 6 | { 7 | public class UnknownBiffRecord : BiffRecord 8 | { 9 | public byte[] Content; 10 | 11 | public UnknownBiffRecord(IStreamReader reader, RecordType id, ushort length) 12 | : base(reader, id, length) 13 | { 14 | //Debug.Assert(false); 15 | this.Content = reader.ReadBytes((int)length); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/WOpt.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Diagnostics; 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Records 6 | { 7 | [BiffRecord(RecordType.WOpt)] 8 | public class WOpt : BiffRecord 9 | { 10 | public const RecordType ID = RecordType.WOpt; 11 | 12 | public WOpt(IStreamReader reader, RecordType id, ushort length) 13 | : base(reader, id, length) 14 | { 15 | // assert that the correct record type is instantiated 16 | Debug.Assert(this.Id == ID); 17 | 18 | // initialize class members from stream 19 | // TODO: place code here 20 | 21 | // assert that the correct number of bytes has been read from the stream 22 | Debug.Assert(this.Offset + this.Length == this.Reader.BaseStream.Position); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Window1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Xls/XlsFileFormat/Records/Window1.cs -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Records/Window2.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EvolutionJobs/b2xtranslator/90d05a6589706cf177a245fcb74e9cba4b6264ae/Xls/XlsFileFormat/Records/Window2.cs -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/CFrtId.cs: -------------------------------------------------------------------------------- 1 | using b2xtranslator.StructuredStorage.Reader; 2 | 3 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 4 | { 5 | public class CFrtId 6 | { 7 | /// 8 | /// An unsigned integer that specifies the first Future Record Type in the range.
9 | /// MUST be less than or equal to rtLast. 10 | ///
11 | public ushort rtFirst; 12 | 13 | /// 14 | /// An unsigned integer that specifies the last Future Record Type in the range. 15 | /// 16 | public ushort rtLast; 17 | 18 | public CFrtId(IStreamReader reader) 19 | { 20 | this.rtFirst = reader.ReadUInt16(); 21 | this.rtLast = reader.ReadUInt16(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/DateUnit.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 3 | { 4 | /// 5 | /// The DateUnit enumeration specifies the unit of measurement of a date value. 6 | /// 7 | public enum DateUnit 8 | { 9 | Days = 1, 10 | Months = 2, 11 | Years = 3 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/FontInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | using b2xtranslator.Tools; 5 | 6 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 7 | { 8 | /// 9 | /// This structure specifies a Font record in the file. 10 | /// 11 | public class FontInfo 12 | { 13 | /// 14 | /// A bit that specifies whether the fonts are scaled. 15 | /// 16 | public bool fScaled; 17 | 18 | public ushort ifnt; 19 | // TODO: implement FontIndex??? 20 | 21 | public FontInfo(IStreamReader reader) 22 | { 23 | this.fScaled = Utils.BitmaskToBool(reader.ReadUInt16(), 0x0001); 24 | this.ifnt = reader.ReadUInt16(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/FtCbls.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | /// 8 | /// This structure appears as part of an Obj record that represents a checkbox or radio button. 9 | /// 10 | public class FtCbls 11 | { 12 | /// 13 | /// Reserved. MUST be 0x0A. 14 | /// 15 | public ushort ft; 16 | 17 | /// 18 | /// Reserved. MUST be 0x0C. 19 | /// 20 | public ushort cb; 21 | 22 | 23 | public FtCbls(IStreamReader reader) 24 | { 25 | this.ft = reader.ReadUInt16(); 26 | this.cb = reader.ReadUInt16(); 27 | 28 | reader.ReadBytes(12); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/FtGmo.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | /// 8 | /// This structure appears in a group-type Obj record. 9 | /// 10 | public class FtGmo 11 | { 12 | /// 13 | /// Reserved. MUST be 0x06. 14 | /// 15 | public ushort ft; 16 | 17 | /// 18 | /// Reserved. MUST be 0x02. 19 | /// 20 | public ushort cb; 21 | 22 | 23 | public FtGmo(IStreamReader reader) 24 | { 25 | this.ft = reader.ReadUInt16(); 26 | this.cb = reader.ReadUInt16(); 27 | 28 | reader.ReadBytes(2); 29 | } 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/FtNts.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | /// 8 | /// This structure specifies the properties of the note-type Obj record containing this FtNts. 9 | /// 10 | public class FtNts 11 | { 12 | /// 13 | /// Reserved. MUST be 0x0D. 14 | /// 15 | public ushort ft; 16 | 17 | /// 18 | /// Reserved. MUST be 0x16. 19 | /// 20 | public ushort cb; 21 | 22 | 23 | public FtNts(IStreamReader reader) 24 | { 25 | this.ft = reader.ReadUInt16(); 26 | this.cb = reader.ReadUInt16(); 27 | 28 | // TODO: place implemenation here 29 | reader.ReadBytes(22); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/FtRbo.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | /// 8 | /// This structure appears as part of an Obj record that represents a radio button. 9 | /// 10 | public class FtRbo 11 | { 12 | /// 13 | /// Reserved. MUST be 0x0B. 14 | /// 15 | public ushort ft; 16 | 17 | /// 18 | /// Reserved. MUST be 0x06. 19 | /// 20 | public ushort cb; 21 | 22 | 23 | public FtRbo(IStreamReader reader) 24 | { 25 | this.ft = reader.ReadUInt16(); 26 | this.cb = reader.ReadUInt16(); 27 | 28 | reader.ReadBytes(6); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/ObjFmla.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | /// 8 | /// This structure specifies a formula in an Obj record. 9 | /// 10 | public class ObjFmla 11 | { 12 | public ushort cbFmla; 13 | 14 | //public ObjectParsedFormula fmla; 15 | 16 | //public PictFmlaEmbedInfo embedInfo; 17 | 18 | 19 | 20 | 21 | public ObjFmla(IStreamReader reader) 22 | { 23 | this.cbFmla = reader.ReadUInt16(); 24 | //this.fmla = new ObjectParsedFormula(reader); 25 | 26 | // TODO: place implemenation here 27 | 28 | // read padding bytes 29 | reader.ReadBytes(this.cbFmla); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/PaneType.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 3 | { 4 | public enum PaneType : byte 5 | { 6 | BottomRight = 0, 7 | TopRight = 1, 8 | BottomLeft = 2, 9 | TopLeft = 3 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/TxOLastRun.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | /// 8 | /// This structure marks the end of the formatting run information in the TxORuns structure. 9 | /// 10 | public class TxOLastRun 11 | { 12 | /// 13 | /// An unsigned integer that specifies the number of characters in the preceding TxO record. 14 | /// 15 | /// The value MUST be the count of characters specified in the cchText field of the preceding TxO record. 16 | /// 17 | public ushort cchText; 18 | 19 | public TxOLastRun(IStreamReader reader) 20 | { 21 | this.cchText = reader.ReadUInt16(); 22 | reader.ReadBytes(6); //unused 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkBackWallThicknessFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkBackWallThicknessFrt 8 | { 9 | public XmlTkDWord wallThickness; 10 | 11 | public XmlTkBackWallThicknessFrt(IStreamReader reader) 12 | { 13 | this.wallThickness = new XmlTkDWord(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkBaseTimeUnitFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkBaseTimeUnitFrt 8 | { 9 | 10 | //0x0060 Time value is measured in days. 11 | //0x0061 Time value is measured in months. 12 | //0x0062 Time value is measured in years. 13 | public XmlTkToken baseUnit; 14 | 15 | public XmlTkBaseTimeUnitFrt(IStreamReader reader) 16 | { 17 | this.baseUnit = new XmlTkToken(reader); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkBlob.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkBlob 8 | { 9 | public XmlTkHeader xtHeader; 10 | 11 | public uint cbBlob; 12 | 13 | public byte[] rgbBlob; 14 | 15 | public XmlTkBlob(IStreamReader reader) 16 | { 17 | this.xtHeader = new XmlTkHeader(reader); 18 | 19 | this.cbBlob = reader.ReadUInt32(); 20 | 21 | this.rgbBlob = reader.ReadBytes((int)this.cbBlob); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkBool.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using System; 4 | using b2xtranslator.StructuredStorage.Reader; 5 | 6 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 7 | { 8 | public class XmlTkBool 9 | { 10 | public XmlTkHeader xtHeader; 11 | 12 | public Boolean dValue; 13 | 14 | public XmlTkBool(IStreamReader reader) 15 | { 16 | this.xtHeader = new XmlTkHeader(reader); 17 | 18 | this.dValue = (reader.ReadByte() > 0); 19 | 20 | //unused 21 | reader.ReadByte(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkColorMappingOverride.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkColorMappingOverride 8 | { 9 | public XmlTkBlob rgThemeOverride; 10 | 11 | public XmlTkColorMappingOverride(IStreamReader reader) 12 | { 13 | this.rgThemeOverride = new XmlTkBlob(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkDWord.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkDWord 8 | { 9 | public XmlTkHeader xtHeader; 10 | 11 | public int dValue; 12 | 13 | public XmlTkDWord(IStreamReader reader) 14 | { 15 | this.xtHeader = new XmlTkHeader(reader); 16 | 17 | this.dValue = reader.ReadInt32(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkDispBlanksAsFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkDispBlanksAsFrt 8 | { 9 | 10 | //0x0067 Specifies that blank values are shown as a gap. 11 | //0x0069 Specifies that blank values are spanned with a line. The current chart group type MUST be area chart group or line chart group with fStacked field of the Line record equal to 1. 12 | public XmlTkToken blanksAs; 13 | 14 | public XmlTkDispBlanksAsFrt(IStreamReader reader) 15 | { 16 | this.blanksAs = new XmlTkToken(reader); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkDouble.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using System; 4 | using b2xtranslator.StructuredStorage.Reader; 5 | 6 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 7 | { 8 | public class XmlTkDouble 9 | { 10 | public XmlTkHeader xtHeader; 11 | 12 | public Double dValue; 13 | 14 | public XmlTkDouble(IStreamReader reader) 15 | { 16 | this.xtHeader = new XmlTkHeader(reader); 17 | 18 | //unused 19 | reader.ReadBytes(4); 20 | 21 | this.dValue = reader.ReadDouble(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkEnd.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkEnd 8 | { 9 | public XmlTkHeader xtHeader; 10 | 11 | public XmlTkEnd(IStreamReader reader) 12 | { 13 | this.xtHeader = new XmlTkHeader(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkEndSurface.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkEndSurface 8 | { 9 | public XmlTkEnd endSurface; 10 | 11 | public XmlTkEndSurface(IStreamReader reader) 12 | { 13 | this.endSurface = new XmlTkEnd(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkFloorThicknessFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkFloorThicknessFrt 8 | { 9 | public XmlTkDWord floorThickness; 10 | 11 | public XmlTkFloorThicknessFrt(IStreamReader reader) 12 | { 13 | this.floorThickness = new XmlTkDWord(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkFormatCodeFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkFormatCodeFrt 8 | { 9 | public XmlTkString stFormat; 10 | 11 | public XmlTkFormatCodeFrt(IStreamReader reader) 12 | { 13 | this.stFormat = new XmlTkString(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkHeader.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkHeader 8 | { 9 | public byte drType; 10 | 11 | public ushort xmlTkTag; 12 | 13 | public XmlTkHeader(IStreamReader reader) 14 | { 15 | this.drType = reader.ReadByte(); 16 | 17 | //unused 18 | reader.ReadByte(); 19 | 20 | this.xmlTkTag = reader.ReadUInt16(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkHeightPercent.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkHeightPercent 8 | { 9 | public XmlTkDouble heightPercent; 10 | 11 | public XmlTkHeightPercent(IStreamReader reader) 12 | { 13 | this.heightPercent = new XmlTkDouble(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkLogBaseFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkLogBaseFrt 8 | { 9 | public XmlTkDouble logScale; 10 | 11 | public XmlTkLogBaseFrt(IStreamReader reader) 12 | { 13 | this.logScale = new XmlTkDouble(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkMajorUnitFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkMajorUnitFrt 8 | { 9 | public XmlTkDouble majorUnit; 10 | 11 | public XmlTkMajorUnitFrt(IStreamReader reader) 12 | { 13 | this.majorUnit = new XmlTkDouble(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkMajorUnitTypeFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkMajorUnitTypeFrt 8 | { 9 | //0x0060 Time value is measured in days. 10 | //0x0061 Time value is measured in months. 11 | //0x0062 Time value is measured in years. 12 | public XmlTkToken majorUnit; 13 | 14 | public XmlTkMajorUnitTypeFrt(IStreamReader reader) 15 | { 16 | this.majorUnit = new XmlTkToken(reader); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkMaxFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkMaxFrt 8 | { 9 | public XmlTkDouble maxScale; 10 | 11 | public XmlTkMaxFrt(IStreamReader reader) 12 | { 13 | this.maxScale = new XmlTkDouble(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkMinFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkMinFrt 8 | { 9 | public XmlTkDouble minScale; 10 | 11 | public XmlTkMinFrt(IStreamReader reader) 12 | { 13 | this.minScale = new XmlTkDouble(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkMinorUnitFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkMinorUnitFrt 8 | { 9 | public XmlTkDouble minorUnit; 10 | 11 | public XmlTkMinorUnitFrt(IStreamReader reader) 12 | { 13 | this.minorUnit = new XmlTkDouble(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkMinorUnitTypeFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkMinorUnitTypeFrt 8 | { 9 | //0x0060 Time value is measured in days. 10 | //0x0061 Time value is measured in months. 11 | //0x0062 Time value is measured in years. 12 | public XmlTkToken minorUnit; 13 | 14 | public XmlTkMinorUnitTypeFrt(IStreamReader reader) 15 | { 16 | this.minorUnit = new XmlTkToken(reader); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkNoMultiLvlLbl.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkNoMultiLvlLbl 8 | { 9 | public XmlTkBool fNoMultiLvlLbl; 10 | 11 | public XmlTkNoMultiLvlLbl(IStreamReader reader) 12 | { 13 | this.fNoMultiLvlLbl = new XmlTkBool(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkOverlay.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkOverlay 8 | { 9 | public XmlTkBool fOverlay; 10 | 11 | public XmlTkOverlay(IStreamReader reader) 12 | { 13 | this.fOverlay = new XmlTkBool(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkPerspectiveFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkPerspectiveFrt 8 | { 9 | public XmlTkDWord perspectiveAngle; 10 | 11 | public XmlTkPerspectiveFrt(IStreamReader reader) 12 | { 13 | this.perspectiveAngle = new XmlTkDWord(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkPieComboFrom12Frt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkPieComboFrom12Frt 8 | { 9 | public XmlTkBool fPieCombo; 10 | 11 | public XmlTkPieComboFrom12Frt(IStreamReader reader) 12 | { 13 | this.fPieCombo = new XmlTkBool(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkRAngAxOffFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkRAngAxOffFrt 8 | { 9 | public XmlTkBool fRightAngAxOff; 10 | 11 | public XmlTkRAngAxOffFrt(IStreamReader reader) 12 | { 13 | this.fRightAngAxOff = new XmlTkBool(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkRotXFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkRotXFrt 8 | { 9 | public XmlTkDWord rotationX; 10 | 11 | public XmlTkRotXFrt(IStreamReader reader) 12 | { 13 | this.rotationX = new XmlTkDWord(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkRotYFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkRotYFrt 8 | { 9 | public XmlTkDWord rotationY; 10 | 11 | public XmlTkRotYFrt(IStreamReader reader) 12 | { 13 | this.rotationY = new XmlTkDWord(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkShowDLblsOverMax.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkShowDLblsOverMax 8 | { 9 | public XmlTkBool fVDLOverMax; 10 | 11 | public XmlTkShowDLblsOverMax(IStreamReader reader) 12 | { 13 | this.fVDLOverMax = new XmlTkBool(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkSpb.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkSpb 8 | { 9 | public XmlTkBlob shapePropsStream; 10 | 11 | public XmlTkSpb(IStreamReader reader) 12 | { 13 | this.shapePropsStream = new XmlTkBlob(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkStart.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkStart 8 | { 9 | public XmlTkHeader xtHeader; 10 | 11 | public XmlTkStart(IStreamReader reader) 12 | { 13 | this.xtHeader = new XmlTkHeader(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkStartSurface.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkStartSurface 8 | { 9 | public XmlTkStart startSurface; 10 | 11 | public XmlTkStartSurface(IStreamReader reader) 12 | { 13 | this.startSurface = new XmlTkStart(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkString.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkString 8 | { 9 | public XmlTkHeader xtHeader; 10 | 11 | public uint cchValue; 12 | 13 | public byte[] rgbValue; 14 | 15 | public XmlTkString(IStreamReader reader) 16 | { 17 | this.xtHeader = new XmlTkHeader(reader); 18 | 19 | this.cchValue = reader.ReadUInt32(); 20 | 21 | this.rgbValue = reader.ReadBytes((int)this.cchValue * 2); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkStyle.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkStyle 8 | { 9 | public XmlTkDWord chartStyle; 10 | 11 | public XmlTkStyle(IStreamReader reader) 12 | { 13 | this.chartStyle = new XmlTkDWord(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkThemeOverride.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkThemeOverride 8 | { 9 | public XmlTkBlob rgThemeOverride; 10 | 11 | public XmlTkThemeOverride(IStreamReader reader) 12 | { 13 | this.rgThemeOverride = new XmlTkBlob(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkTickLabelPositionFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkTickLabelPositionFrt 8 | { 9 | public XmlTkToken xmltkHigh; 10 | 11 | public XmlTkTickLabelPositionFrt(IStreamReader reader) 12 | { 13 | this.xmltkHigh = new XmlTkToken(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkTickLabelSkipFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkTickLabelSkipFrt 8 | { 9 | public XmlTkDWord nInternal; 10 | 11 | public XmlTkTickLabelSkipFrt(IStreamReader reader) 12 | { 13 | this.nInternal = new XmlTkDWord(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkTickMarkSkipFrt.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkTickMarkSkipFrt 8 | { 9 | public XmlTkDWord nInternal; 10 | 11 | public XmlTkTickMarkSkipFrt(IStreamReader reader) 12 | { 13 | this.nInternal = new XmlTkDWord(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkToken.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkToken 8 | { 9 | public XmlTkHeader xtHeader; 10 | 11 | public ushort dValue; 12 | 13 | public XmlTkToken(IStreamReader reader) 14 | { 15 | this.xtHeader = new XmlTkHeader(reader); 16 | 17 | this.dValue = reader.ReadUInt16(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/Structures/XmlTkTpb.cs: -------------------------------------------------------------------------------- 1 |  2 | 3 | using b2xtranslator.StructuredStorage.Reader; 4 | 5 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.Structures 6 | { 7 | public class XmlTkTpb 8 | { 9 | public XmlTkBlob textPropsStream; 10 | 11 | public XmlTkTpb(IStreamReader reader) 12 | { 13 | this.textPropsStream = new XmlTkBlob(reader); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Xls/XlsFileFormat/StyleData/FormatData.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace b2xtranslator.Spreadsheet.XlsFileFormat.StyleData 3 | { 4 | /// 5 | /// This object stores the data from a format biff record 6 | /// 7 | public class FormatData 8 | { 9 | public int ifmt; 10 | 11 | public string formatString; 12 | 13 | /// 14 | /// Ctor 15 | /// 16 | /// ifmt value from the parsed biff record 17 | /// the formatstring 18 | public FormatData(int ifmt, string formatstring) 19 | { 20 | this.formatString = formatstring; 21 | this.ifmt = ifmt; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Xls/b2xtranslator.xls.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | netcoreapp2.0 4 | ..\..\key.snk 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | --------------------------------------------------------------------------------