100 sal_uInt16& rnXclForeIx, sal_uInt16& rnXclBackIx,
sal_uInt8& rnXclPattern,
101 sal_uInt32 nForeColorId, sal_uInt32 nBackColorId )
const;
199 virtual bool Equals(
const XclFontData& rFontData, sal_uInt32 nHash )
const override;
258 explicit XclExpNumFmt( sal_uInt32 nScNumFmt, sal_uInt16 nXclNumFmt, OUString aFrmt ) :
279 sal_uInt16
Insert( sal_uInt32 nScNumFmt );
314 void FillToXF3( sal_uInt16& rnProt )
const;
328 bool bForceLineBreak,
XclBiff eBiff,
bool bStyle =
false );
331 void FillToXF5( sal_uInt16& rnAlign )
const;
333 void FillToXF8( sal_uInt16& rnAlign, sal_uInt16& rnMiscAttrib )
const;
365 void FillToXF5( sal_uInt32& rnBorder, sal_uInt32& rnArea )
const;
367 void FillToXF8( sal_uInt32& rnBorder1, sal_uInt32& rnBorder2 )
const;
370 void FillToCF8( sal_uInt16& rnLine, sal_uInt32& rnColor )
const;
400 void FillToXF5( sal_uInt32& rnArea )
const;
402 void FillToXF8( sal_uInt32& rnBorder2, sal_uInt16& rnArea )
const;
405 void FillToCF8( sal_uInt16& rnPattern, sal_uInt16& rnColor )
const;
447 bool bForceLineBreak =
false );
466 sal_uInt32 nScForceNumFmt,
467 sal_uInt16 nForceXclFont,
468 bool bForceLineBreak )
const;
480 void SetXmlIds( sal_uInt32 nBorderId, sal_uInt32 nFillId );
516 sal_uInt32 nForceScNumFmt,
517 sal_uInt16 nForceXclFont,
518 bool bForceLineBreak,
541 void SetFont( sal_uInt16 nXclFont );
551 explicit XclExpStyle( sal_uInt32 nXFId, OUString aStyleName );
604 sal_uInt16 nForceXclFont,
605 bool bForceLineBreak );
615 sal_uInt32 nForceScNumFmt,
616 bool bForceLineBreak );
632 sal_uInt16
GetXFIndex( sal_uInt32 nXFId )
const;
648 sal_uInt16 nForceXclFont,
bool bForceLineBreak )
const;
658 sal_uInt32 nForceScNumFmt,
659 sal_uInt16 nForceXclFont,
bool bForceLineBreak );
721 std::map<FindKey, std::vector<sal_uInt32>>
738 XclExpDxf(
const XclExpRoot& rRoot, std::unique_ptr<XclExpCellAlign> pAlign, std::unique_ptr<XclExpCellBorder> pBorder,
739 std::unique_ptr<XclExpDxfFont> pFont, std::unique_ptr<XclExpNumFmt> pNumberFmt,
740 std::unique_ptr<XclExpCellProt> pProt, std::unique_ptr<XclExpColor> pColor);
763 sal_Int32
GetDxfId(
const OUString& rName)
const;
Stores all default colors for a specific BIFF version.
Used as placeholder for font index 4, which is not used in Excel.
virtual bool Equals(const XclFontData &rFontData, sal_uInt32 nHash) const override
Returns always false to never find this font while searching the font list.
virtual void Save(XclExpStream &rStrm) override
Skips writing this record.
XclExpBlindFont(const XclExpRoot &rRoot)
Represents a default XF record.
void SetNumFmt(sal_uInt16 nXclNumFmt)
Sets the Excel number format index.
void SetFont(sal_uInt16 nXclFont)
Sets the Excel font index.
XclExpDefaultXF(const XclExpRoot &rRoot, bool bCellXF)
XclExpDxfFont(const XclExpRoot &rRoot, const SfxItemSet &rItemSet)
virtual void SaveXml(XclExpXmlStream &rStrm) override
std::unique_ptr< XclExpNumFmt > mpNumberFmt
std::unique_ptr< XclExpCellAlign > mpAlign
std::unique_ptr< XclExpCellProt > mpProt
std::unique_ptr< XclExpCellArea > mpCellArea
virtual void SaveXml(XclExpXmlStream &rStrm) override
void SaveXmlExt(XclExpXmlStream &rStrm)
virtual ~XclExpDxf() override
std::unique_ptr< XclExpDxfFont > mpFont
XclExpDxf(const XclExpRoot &rRoot, std::unique_ptr< XclExpCellAlign > pAlign, std::unique_ptr< XclExpCellBorder > pBorder, std::unique_ptr< XclExpDxfFont > pFont, std::unique_ptr< XclExpNumFmt > pNumberFmt, std::unique_ptr< XclExpCellProt > pProt, std::unique_ptr< XclExpColor > pColor)
std::unique_ptr< XclExpCellBorder > mpBorder
std::unique_ptr< XclExpColor > mpColor
std::vector< std::unique_ptr< XclExpDxf > > DxfContainer
sal_Int32 GetDxfByColor(Color aColor) const
void addColor(Color aColor)
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpDxfs(const XclExpRoot &rRoot)
std::map< OUString, sal_Int32 > maStyleNameToDxfId
std::unique_ptr< NfKeywordTable > mpKeywordTable
sal_Int32 GetDxfId(const OUString &rName) const
std::map< Color, sal_Int32 > maColorToDxfId
Stores the data of all fonts used in the document.
XclExpFontList maFontList
XclExpFontBuffer(const XclExpRoot &rRoot)
size_t mnXclMaxSize
List of all FONT records.
sal_uInt16 Insert(const XclFontData &rFontData, XclExpColorType eColorType, bool bAppFont=false)
Inserts a new font with the passed font data into the buffer if not present.
const XclExpFont * GetFont(sal_uInt16 nXclFont) const
Returns the specified font from font list.
void InitDefaultFonts()
Initializes the default fonts for the current BIFF version.
size_t Find(const XclFontData &rFontData)
Tries to find the passed font and returns the current list index.
XclExpRecordList< XclExpFont > XclExpFontList
const XclFontData & GetAppFontData() const
Returns the application font data of this file, needed e.g.
XclExpFontList::RecordRefType XclExpFontRef
virtual void Save(XclExpStream &rStrm) override
Writes all FONT records contained in this buffer.
virtual void SaveXml(XclExpXmlStream &rStrm) override
Stores all data of an Excel font and provides export of FONT records.
virtual bool Equals(const XclFontData &rFontData, sal_uInt32 nHash) const
Compares this font with the passed font data.
sal_uInt32 mnHash
Unique color ID for text color.
XclExpFont(const XclExpRoot &rRoot, const XclFontData &rFontData, XclExpColorType eColorType)
virtual void SaveXml(XclExpXmlStream &rStrm) override
sal_uInt32 mnColorId
All font attributes.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of the FONT record.
const XclFontData & GetFontData() const
Returns read-only access to font data.
sal_uInt32 GetFontColorId() const
Returns the font color identifier.
Stores all number formats used in the document.
OUString GetFormatCode(sal_uInt32 nScNumFmt)
XclExpNumFmtBuffer(const XclExpRoot &rRoot)
sal_uInt32 mnStdFmt
Replacement table.
sal_uInt16 Insert(sal_uInt32 nScNumFmt)
Inserts a number format into the format buffer.
void WriteFormatRecord(XclExpStream &rStrm, sal_uInt16 nXclNumFmt, const OUString &rFormatStr)
Writes the FORMAT record with index nXclIx and format string rFormatStr.
virtual ~XclExpNumFmtBuffer() override
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpNumFmtVec maFormatMap
Special number formatter for conversion.
std::unique_ptr< NfKeywordTable > mpKeywordTable
Maps core formats to Excel indexes.
sal_uInt32 GetStandardFormat() const
Returns the core index of the current standard number format.
sal_uInt16 mnXclOffset
Key for standard number format.
::std::vector< XclExpNumFmt > XclExpNumFmtVec
virtual void Save(XclExpStream &rStrm) override
Writes all FORMAT records contained in this buffer.
SvNumberFormatterPtr mxFormatter
Stores all used colors in the document.
sal_uInt32 InsertColor(const Color &rColor, XclExpColorType eType, sal_uInt16 nAutoDefault=0)
Inserts the color into the list and updates weighting.
sal_uInt16 GetColorIndex(sal_uInt32 nColorId) const
Returns the Excel palette index of the color with passed color ID.
virtual void SaveXml(XclExpXmlStream &rStrm) override
Color GetColor(sal_uInt16 nXclIndex) const
Returns the color for a (non-zero-based) Excel palette entry.
void Finalize()
Reduces the color list to the maximum count of the current BIFF version.
void GetMixedColors(sal_uInt16 &rnXclForeIx, sal_uInt16 &rnXclBackIx, sal_uInt8 &rnXclPattern, sal_uInt32 nForeColorId, sal_uInt32 nBackColorId) const
Returns a foreground and background color for the two passed color IDs.
std::shared_ptr< XclExpPaletteImpl > XclExpPaletteImplRef
static sal_uInt32 GetColorIdFromIndex(sal_uInt16 nIndex)
Returns the color ID representing a fixed Excel palette index (i.e.
virtual void Save(XclExpStream &rStrm) override
Saves the PALETTE record, if it differs from the default palette.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of the PALETTE record.
virtual ~XclExpPalette() override
XclExpPaletteImplRef mxImpl
XclExpPalette(const XclExpRoot &rRoot)
Base class for all Excel records.
rtl::Reference< XclExpXF > RecordRefType
Base class for single records with any content.
Access to global data from other classes.
This class is used to export Excel record streams.
Represents a STYLE record containing the data of a cell style.
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of the STYLE record.
sal_uInt8 mnStyleId
XF identifier for style formatting.
XclExpXFId maXFId
Name of the cell style.
sal_uInt8 mnLevel
Built-in style identifier.
bool IsBuiltIn() const
Returns true, if this record represents an Excel built-in style.
XclExpStyle(sal_uInt32 nXFId, OUString aStyleName)
virtual void SaveXml(XclExpXmlStream &rStrm) override
Stores all XF records (cell formats and cell styles) in the document.
sal_uInt32 InsertCellXF(const ScPatternAttr *pPattern, sal_Int16 nScript, sal_uInt32 nForceScNumFmt, sal_uInt16 nForceXclFont, bool bForceLineBreak)
Tries to find the XF record containing the passed format or inserts a new record.
::std::map< sal_uInt32, XclExpBuiltInInfo > XclExpBuiltInMap
void Finalize()
Reduces the XF record list to the maximum allowed number of records.
void AppendXFIndex(sal_uInt32 nXFId)
Appends a XF index to the internal ID<->index maps.
virtual void Save(XclExpStream &rStrm) override
Writes all XF records contained in this buffer.
void AddBorderAndFill(const XclExpXF &rXF)
sal_uInt32 InsertWithNumFmt(const ScPatternAttr *pPattern, sal_Int16 nScript, sal_uInt32 nForceScNumFmt, bool bForceLineBreak)
Finds or creates a cell XF record for the passed item set, with custom number format.
sal_uInt32 FindXF(const ScPatternAttr &rPattern, sal_uInt32 nForceScNumFmt, sal_uInt16 nForceXclFont, bool bForceLineBreak) const
Returns the XF ID of the cell XF containing the passed format.
XclExpXFBuffer(const XclExpRoot &rRoot)
sal_uInt32 InsertStyleXF(const SfxStyleSheetBase &rStyleSheet)
Inserts the passed cell style.
XclExpRecordList< XclExpStyle > maStyleList
map of itemset to vector of positions, to speed up find
XclExpXFList maSortedXFList
Maps XF IDs to OOXML Cell indexes.
XclExpFillList maFills
List of borders used by XF records.
ScfUInt16Vec maXFIndexVec
Contained elements describe built-in XFs.
static sal_uInt32 GetXFIdFromIndex(sal_uInt16 nXFIndex)
Returns the XF identifier representing a fixed Excel XF index (e.g.
::std::vector< XclExpCellBorder > XclExpBorderList
sal_uInt32 FindBuiltInXF(sal_uInt8 nStyleId, sal_uInt8 nLevel) const
Returns the XF ID of a built-in style XF, searches by style identifier.
sal_uInt32 InsertWithFont(const ScPatternAttr *pPattern, sal_Int16 nScript, sal_uInt16 nForceXclFont, bool bForceLineBreak)
Finds or creates a cell XF record for the passed item set.
ScfUInt16Vec maCellIndexes
Maps XF IDs to OOXML Style indexes.
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpBuiltInMap maBuiltInMap
List of all STYLE records.
sal_Int32 GetXmlStyleIndex(sal_uInt32 nXFId) const
XclExpBorderList maBorders
List of XF records in XF index order.
static sal_uInt32 GetDefCellXFId()
Returns the XF identifier representing the default cell XF.
static FindKey ToFindKey(XclExpXF const &)
void InsertUserStyles()
Inserts an XF and a STYLE record for all user defined style sheets.
sal_uInt32 Insert(const ScPatternAttr *pPattern, sal_Int16 nScript)
Finds or creates a cell XF record for the passed item set.
const XclExpXF * GetXFById(sal_uInt32 nXFId) const
Returns an XF record by its unique identifier.
void InsertDefaultRecords()
Inserts all default XF and STYLE records.
XclExpXFList::RecordRefType XclExpXFRef
void SaveXFXml(XclExpXmlStream &rStrm, XclExpXF &rXF)
::std::vector< XclExpCellArea > XclExpFillList
ScfUInt16Vec maStyleIndexes
Maps XF IDs to XF indexes.
std::map< FindKey, std::vector< sal_uInt32 > > maXFFindMap
List of all XF records.
sal_uInt16 GetXFIndex(sal_uInt32 nXFId) const
Returns the Excel XF index of the XF record with passed XF ID.
sal_uInt32 AppendBuiltInXFWithStyle(XclExpXFRef const &xXF, sal_uInt8 nStyleId, sal_uInt8 nLevel=EXC_STYLE_NOLEVEL)
Inserts a built-in XF and STYLE record and returns the XF ID.
sal_uInt32 InsertStyle(const SfxStyleSheetBase *pStyleSheet)
Inserts the passed cell style.
void Initialize()
Inserts predefined built-in styles and user-defined styles.
XclExpRecordList< XclExpXF > XclExpXFList
sal_uInt32 AppendBuiltInXF(XclExpXFRef const &xXF, sal_uInt8 nStyleId, sal_uInt8 nLevel=EXC_STYLE_NOLEVEL)
Inserts a built-in XF record without a STYLE record and returns the XF ID.
sal_Int32 GetXmlCellIndex(sal_uInt32 nXFId) const
Represents an XF record which contains all formatting data of a cell or cell style.
sal_uInt32 GetScNumFmt() const
XclExpCellArea maArea
Border line style.
virtual void SaveXml(XclExpXmlStream &rStrm) override
bool Equals(const ScPatternAttr &rPattern, sal_uInt32 nScForceNumFmt, sal_uInt16 nForceXclFont, bool bForceLineBreak) const
Returns true, if this XF record represents the passed cell formatting.
sal_uInt8 GetUsedFlags() const
Returns the bits specifying the used attributes.
sal_uInt16 mnXclNumFmt
Excel font index.
sal_uInt16 GetXclFont() const
void Init(const SfxItemSet &rItemSet, sal_Int16 nScript, sal_uInt32 nForceScNumFmt, sal_uInt16 nForceXclFont, bool bForceLineBreak, bool bDefStyle)
Fills all members from the passed item set.
sal_uInt32 mnScNumFmt
XF ID of parent XF record.
const XclExpCellAlign & GetAlignmentData() const
Returns the alignment settings of this XF.
void WriteBody5(XclExpStream &rStrm)
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of the XF record.
void SetFinalColors()
Sets the resulting Excel palette index from all used color IDs (border and area).
void InitDefault()
Initializes with default values.
void WriteBody8(XclExpStream &rStrm)
const SfxItemSet * GetItemSet() const
const SfxItemSet * mpItemSet
XclExpCellBorder maBorder
All alignment attributes.
XclExpCellAlign maAlignment
Cell protection flags.
const XclExpCellBorder & GetBorderData() const
Returns the cell border settings of this XF.
const XclExpCellArea & GetAreaData() const
Returns the cell fill settings of this XF.
void SetXmlIds(sal_uInt32 nBorderId, sal_uInt32 nFillId)
sal_Int32 mnFillId
OOXML Border Index.
XclExpCellProt maProtection
Pointer to the item set (we do not own it).
sal_Int32 mnBorderId
Excel number format index.
XclExpXF(const XclExpRoot &rRoot, const ScPatternAttr &rPattern, sal_Int16 nScript, sal_uInt32 nScForceNumFmt=NUMBERFORMAT_ENTRY_NOT_FOUND, sal_uInt16 nForceXclFont=EXC_FONT_NOTFOUND, bool bForceLineBreak=false)
Constructs a cell XF record from the passed Calc cell formatting.
sal_uInt16 mnXclFont
Calc number format index.
sal_uInt32 mnParentXFId
Background area style.
const XclExpCellProt & GetProtectionData() const
Returns the cell protection settings of this XF.
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpXmlStyleSheet(const XclExpRoot &rRoot)
Access to global data for a filter object (imported or exported document) from other classes.
Contains base members for XF record import/export.
bool Equals(const XclXFBase &rCmp) const
Returns true, if this object is equal to the passed.
Helper functions for font export.
ScDxfFont GetDxfFontFromItemSet(const XclExpRoot &rRoot, const SfxItemSet &rSet)
Get a dxf related font object from the item set.
vcl::Font GetFontFromItemSet(const XclExpRoot &rRoot, const SfxItemSet &rItemSet, sal_Int16 nScript)
Returns a VCL font object filled from the passed item set.
bool CheckItems(const XclExpRoot &rRoot, const SfxItemSet &rItemSet, sal_Int16 nScript, bool bDeep)
Returns true, if at least one font related item is set in the passed item set.
sal_Int16 GetFirstUsedScript(const XclExpRoot &rRoot, const SfxItemSet &rItemSet)
Returns the script type of the first font item found in the item set and its parents.
Contains all cell alignment attributes.
Contains background colors and pattern for a cell.
Contains color and line style for each cell border line.
Contains all cell protection attributes.
Extends the XclCellAlign struct for export.
bool FillFromItemSet(const XclRoot &rRoot, const SfxItemSet &rItemSet, bool bForceLineBreak, XclBiff eBiff, bool bStyle=false)
Fills the alignment attributes from the passed item set.
void SaveXml(XclExpXmlStream &rStrm) const
void FillToXF8(sal_uInt16 &rnAlign, sal_uInt16 &rnMiscAttrib) const
Fills the data to the passed fields of a BIFF8 XF record.
void FillToXF5(sal_uInt16 &rnAlign) const
Fills the data to the passed fields of a BIFF5/BIFF7 XF record.
Extends the XclCellArea struct for export.
Color maForeColor
Background color ID.
void SaveXml(XclExpXmlStream &rStrm) const
sal_uInt32 mnBackColorId
Foreground color ID.
void FillToCF8(sal_uInt16 &rnPattern, sal_uInt16 &rnColor) const
Fills the data to the passed fields of a BIFF8 CF (conditional format) record.
void FillToXF5(sal_uInt32 &rnArea) const
Fills the data to the passed fields of a BIFF5/BIFF7 XF record.
void SetFinalColors(const XclExpPalette &rPalette)
Fills the mn***Color base members from the mn***ColorId members.
model::ComplexColor maForegroundComplexColor
bool FillFromItemSet(const SfxItemSet &rItemSet, XclExpPalette &rPalette, bool bStyle)
Fills the area attributes from the passed item set.
model::ComplexColor maBackgroundComplexColor
void FillToXF8(sal_uInt32 &rnBorder2, sal_uInt16 &rnArea) const
Fills the data to the passed fields of a BIFF8 XF record.
Extends the XclCellBorder struct for export.
sal_uInt32 mnDiagColorId
Color ID for bottom line.
model::ComplexColor maComplexColorLeft
Color ID for diagonal line(s).
model::ComplexColor maComplexColorTop
void SetFinalColors(const XclExpPalette &rPalette)
Fills the mn***Color base members from the mn***ColorId members.
bool FillFromItemSet(const SfxItemSet &rItemSet, XclExpPalette &rPalette, XclBiff eBiff, bool bStyle=false)
Fills the border attributes from the passed item set.
sal_uInt32 mnRightColorId
Color ID for left line.
sal_uInt32 mnBottomColorId
Color ID for top line.
model::ComplexColor maComplexColorRight
model::ComplexColor maComplexColorDiagonal
void FillToXF8(sal_uInt32 &rnBorder1, sal_uInt32 &rnBorder2) const
Fills the data to the passed fields of a BIFF8 XF record.
void FillToCF8(sal_uInt16 &rnLine, sal_uInt32 &rnColor) const
Fills the data to the passed fields of a BIFF8 CF (conditional format) record.
void SaveXml(XclExpXmlStream &rStrm) const
model::ComplexColor maComplexColorBottom
void FillToXF5(sal_uInt32 &rnBorder, sal_uInt32 &rnArea) const
Fills the data to the passed fields of a BIFF5/BIFF7 XF record.
sal_uInt32 mnTopColorId
Color ID for right line.
Extends the XclCellProt struct for export.
bool FillFromItemSet(const SfxItemSet &rItemSet, bool bStyle=false)
Fills the protection attributes from the passed item set.
void SaveXml(XclExpXmlStream &rStrm) const
void FillToXF3(sal_uInt16 &rnProt) const
Fills the data to the passed fields of a BIFF3-BIFF8 XF record.
void SaveXml(XclExpXmlStream &rStrm) const
model::ComplexColor maComplexColor
bool FillFromItemSet(const SfxItemSet &rItemSet)
Stores a core number format index with corresponding Excel format index.
void SaveXml(XclExpXmlStream &rStrm)
sal_uInt16 mnXclNumFmt
Core index of the number format.
OUString maNumFmtString
Resulting Excel format index.
XclExpNumFmt(sal_uInt32 nScNumFmt, sal_uInt16 nXclNumFmt, OUString aFrmt)
format string
composite key for the find-map, so we can do partial key searching
bool operator<(const FindKey &other) const
const SfxItemSet * mpItemSet
Extended info about a built-in XF.
bool mbHasStyleRec
true = XF still predefined.
XclExpBuiltInInfo()
true = STYLE record created.
sal_uInt8 mnLevel
Built-in style identifier.
bool mbPredefined
Level for RowLevel/ColLevel styles.
A combination of unique XF identifier with real Excel XF index.
sal_uInt16 mnXFIndex
Temporary XF identifier.
XclExpXFId(sal_uInt32 nXFId)
void ConvertXFIndex(const XclExpRoot &rRoot)
Converts the XF identifier in mnXFId to an Excel XF index and stores it in mnXFIndex.
XclExpXFId()
Real Excel XF index.
This struct helps reading and writing Excel fonts.
const sal_uInt16 EXC_ID_FONTLIST
const sal_uInt16 EXC_ID_XFLIST
For internal use only.
XclExpColorType
For internal use only. TODO:moggi: find a better/correct value.
@ EXC_COLOR_CHARTAREA
Line in a chart.
@ EXC_COLOR_GRID
Text color in a form control.
@ EXC_COLOR_CELLBORDER
Text in a cell.
@ EXC_COLOR_CTRLTEXT
Area in a chart.
@ EXC_COLOR_CHARTTEXT
Background area of a cell.
@ EXC_COLOR_CELLAREA
Border of a cell.
@ EXC_COLOR_CHARTLINE
Text color in a chart.
@ EXC_COLOR_TABBG
Spreadsheet grid color.
const sal_uInt16 EXC_ID_FORMATLIST
For internal use only.
const sal_uInt16 EXC_ID_DXFS
For internal use only.
const size_t EXC_FONTLIST_NOTFOUND
::std::unique_ptr< SvNumberFormatter > SvNumberFormatterPtr
XclBiff
An enumeration for all Excel file format types (BIFF types).
const sal_uInt16 EXC_FONT_NOTFOUND
Application font index.
const sal_uInt8 EXC_STYLE_NOLEVEL
Number of outline level styles.
const sal_uInt16 EXC_XF_DEFAULTCELL
Excel index to default style XF.
const sal_uInt8 EXC_STYLE_USERDEF
"Followed_Hyperlink" style.
constexpr sal_uInt32 NUMBERFORMAT_ENTRY_NOT_FOUND