/*
 * Copyright 2006 Juan Lang
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

import "oaidl.idl";

typedef enum tagTomConstants
{
    tomFalse       = 0,
    tomTrue        = -1,
    tomUndefined   = -9999999,
    tomToggle      = -9999998,
    tomAutoColor   = -9999997,
    tomDefault     = -9999996,
    tomSuspend     = -9999995,
    tomResume      = -9999994,
    tomApplyNow    = 0,
    tomApplyLater  = 1,
    tomTrackParms  = 2,
    tomCacheParms  = 3,
    tomBackward    = 0xc00000001,
    tomForward     = 0x3ffffffff,
    tomMove        = 0,
    tomExtend      = 1,
    tomNoSelection          = 0,
    tomSelectionIP          = 1,
    tomSelectionNormal      = 2,
    tomSelectionFrame       = 3,
    tomSelectionColumn      = 4,
    tomSelectionRow         = 5,
    tomSelectionBlock       = 6,
    tomSelectionInlineShape = 7,
    tomSelectionShape       = 8,
    tomSelStartActive = 1,
    tomSelAtEOL       = 2,
    tomSelOvertype    = 4,
    tomSelActive      = 8,
    tomSelReplace     = 16,
    tomEnd   = 0,
    tomStart = 32,
    tomCollapseEnd   = 0,
    tomCollapseStart = 1,
    tomClientCoord = 256,
    tomNone       = 0,
    tomSingle     = 1,
    tomWords      = 2,
    tomDouble     = 3,
    tomDotted     = 4,
    tomDash       = 5,
    tomDashDot    = 6,
    tomDashDotDot = 7,
    tomWave       = 8,
    tomThick      = 9,
    tomHair       = 10,
    tomLineSpaceSingle   = 0,
    tomLineSpace1pt5     = 1,
    tomLineSpaceDouble   = 2,
    tomLineSpaceAtLeast  = 3,
    tomLineSpaceExactly  = 4,
    tomLineSpaceMultiple = 5,
    tomAlignLeft        = 0,
    tomAlignCenter      = 1,
    tomAlignRight       = 2,
    tomAlignJustify     = 3,
    tomAlignDecimal     = 3,
    tomAlignBar         = 4,
    tomAlignInterWord   = 3,
    tomAlignInterLetter = 4,
    tomAlignScaled      = 5,
    tomAlignGlyphs      = 6,
    tomAlignSnapGrid    = 7,
    tomSpaces     = 0,
    tomDots       = 1,
    tomDashes     = 2,
    tomLines      = 3,
    tomThickLines = 4,
    tomEquals     = 5,
    tomTabBack = -3,
    tomTabNext = -2,
    tomTabHere = -1,
    tomListBullet           = 1,
    tomListNumberAsArabic   = 2,
    tomListNumberAsLCLetter = 3,
    tomListNumberAsUCLetter = 4,
    tomListNumberAsLCRoman  = 5,
    tomListNumberAsUCRoman  = 6,
    tomListNumberAsSequence = 7,
    tomListParentheses      = 0x10000,
    tomListPeriod           = 0x20000,
    tomListPlain            = 0x30000,
    tomCharacter  = 1,
    tomWord       = 2,
    tomSentence   = 3,
    tomParagraph  = 4,
    tomLine       = 5,
    tomStory      = 6,
    tomScreen     = 7,
    tomSection    = 8,
    tomColumn     = 9,
    tomRow        = 10,
    tomWindow     = 11,
    tomCell       = 12,
    tomCharFormat = 13,
    tomParaFormat = 14,
    tomTable      = 15,
    tomObject     = 16,
    tomMatchWord    = 2,
    tomMatchCase    = 4,
    tomMatchPattern = 8,
    tomUnknownStory         = 0,
    tomMainTextStory        = 1,
    tomFootnotesStory       = 2,
    tomEndnotesStory        = 3,
    tomCommentsStory        = 4,
    tomTextFrameStory       = 5,
    tomEvenPagesHeaderStory = 6,
    tomPrimaryHeaderStory   = 7,
    tomEvenPagesFooterStory = 8,
    tomPrimaryFooterStory   = 9,
    tomFirstPageHeaderStory = 10,
    tomFirstPageFooterStory = 11,
    tomNoAnimation        = 0,
    tomLasVegasLights     = 1,
    tomBlinkingBackground = 2,
    tomSparkleText        = 3,
    tomMarchingBlackAnts  = 4,
    tomMarchingRedAnts    = 5,
    tomShimmer            = 6,
    tomWipeDown           = 7,
    tomWipeRight          = 8,
    tomAnimationMax       = 8,
    tomLowerCase     = 0,
    tomUpperCase     = 1,
    tomTitleCase     = 2,
    tomSentenceCase  = 4,
    tomToggleCase    = 5,
    tomReadOnly         = 0x100,
    tomShareDenyRead    = 0x200,
    tomShareDenyWrite   = 0x400,
    tomPasteFile        = 0x1000,
    tomCreateNew        = 0x10,
    tomCreateAlways     = 0x20,
    tomOpenExisting     = 0x30,
    tomOpenAlways       = 0x40,
    tomTruncateExisting = 0x50,
    tomRTF              = 0x1,
    tomText             = 0x2,
    tomHTML             = 0x3,
    tomWordDocument     = 0x4,
    tomBold      = 0x800000001,
    tomItalic    = 0x800000002,
    tomUnderline = 0x800000004,
    tomStrikeout = 0x800000008,
    tomProtected = 0x800000010,
    tomLink      = 0x800000020,
    tomSmallCaps = 0x800000040,
    tomAllCaps   = 0x800000080,
    tomHidden    = 0x800000100,
    tomOutline   = 0x800000200,
    tomShadow    = 0x800000400,
    tomEmboss    = 0x800000800,
    tomImprint   = 0x800001000,
    tomDisabled  = 0x800002000,
    tomRevised   = 0x800004000,
    tomNormalCaret      = 0,
    tomKoreanBlockCaret = 0x1,
    tomIncludeInset = 0x1,
    tomIgnoreCurrentFont  = 0,
    tomMatchFontCharset   = 0x1,
    tomMatchFontSignature = 0x2,
    tomCharset = 0x80000000,
    tomRE10Mode = 0x1,
    tomNoIME   = 0x80000,
    tomSelfIME = 0x40000
} tomConstants;

interface ITextRange;
interface ITextSelection;
interface ITextStoryRanges;

[
  object,
  uuid(8cc497c0-a1df-11ce-8098-00aa0047be5d)
]
interface ITextDocument : IDispatch
{
    HRESULT GetName([retval, out]BSTR *pName);
    HRESULT GetSelection([retval, out]ITextSelection **ppSel);
    HRESULT GetStoryCount([retval, out]long *pCount);
    HRESULT GetStoryRanges([retval, out]ITextStoryRanges **ppStories);
    HRESULT GetSaved([retval, out]long *pValue);
    HRESULT SetSaved([in]long Value);
    HRESULT GetDefaultTabStop([retval, out]float *pValue);
    HRESULT SetDefaultTabStop([in]float Value);
    HRESULT New();
    HRESULT Open([in]VARIANT *pVar, [in]long Flags, [in]long CodePage);
    HRESULT Save([in]VARIANT *pVar, [in]long Flags, [in]long CodePage);
    HRESULT Freeze([retval, out]long *pCount);
    HRESULT Unfreeze([retval, out]long *pCount);
    HRESULT BeginEditCollection();
    HRESULT EndEditCollection();
    HRESULT Undo([in]long Count, [retval, out]long *prop);
    HRESULT Redo([in]long Count, [retval, out]long *prop);
    HRESULT Range([in]long cp1, [in]long cp2, [retval, out]ITextRange**ppRange);
    HRESULT RangeFromPoint([in]long x, [in]long y, [retval, out]ITextRange**ppRange);
}

interface ITextFont;
interface ITextPara;

[
  object,
  uuid(8cc497c2-a1df-11ce-8098-00aa0047be5d)
]
interface ITextRange : IDispatch
{
    HRESULT GetText([retval, out]BSTR *pbstr);
    HRESULT SetText([in]BSTR bstr);
    HRESULT GetChar([retval, out]long *pch);
    HRESULT SetChar([in]long ch);
    HRESULT GetDuplicate([retval, out]ITextRange **ppRange);
    HRESULT GetFormattedText([retval, out]ITextRange **ppRange);
    HRESULT SetFormattedText([in]ITextRange *pRange);
    HRESULT GetStart([retval, out]long *pcpFirst);
    HRESULT SetStart([in]long cpFirst);
    HRESULT GetEnd([retval, out]long *pcpLim);
    HRESULT SetEnd([in]long cpLim);
    HRESULT GetFont([retval, out]ITextFont **pFont);
    HRESULT SetFont([in]ITextFont *pFont);
    HRESULT GetPara([retval, out]ITextPara **ppPara);
    HRESULT SetPara([in]ITextPara *pPara);
    HRESULT GetStoryLength([retval, out]long *pcch);
    HRESULT GetStoryType([retval, out]long *pValue);
    HRESULT Collapse([in]long bStart);
    HRESULT Expand([in]long Unit, [retval, out]long *pDelta);
    HRESULT GetIndex([in]long Unit, [retval, out]long *pIndex);
    HRESULT SetIndex([in]long Unit, [in]long Index, [in]long Extend);
    HRESULT SetRange([in]long cpActive, [in]long cpOther);
    HRESULT InRange([in]ITextRange *pRange, [retval, out]long *pb);
    HRESULT InStory([in]ITextRange *pRange, [retval, out]long *pb);
    HRESULT IsEqual([in]ITextRange *pRange, [retval, out]long *pb);
    HRESULT Select();
    HRESULT StartOf([in]long Unit, [in]long Extend, [retval, out]long *pDelta);
    HRESULT EndOf([in]long Unit, [in]long Extend, [retval, out]long *pDelta);
    HRESULT Move([in]long Unit, [in]long Count, [retval, out]long *pDelta);
    HRESULT MoveStart([in]long Unit, [in]long Count, [retval, out]long *pDelta);
    HRESULT MoveEnd([in]long Unit, [in]long Count, [retval, out]long *pDelta);
    HRESULT MoveWhile([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
    HRESULT MoveStartWhile([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
    HRESULT MoveEndWhile([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
    HRESULT MoveUntil([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
    HRESULT MoveStartUntil([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
    HRESULT MoveEndUntil([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta);
    HRESULT FindText([in]BSTR bstr, [in]long cch, [in]long Flags, [retval, out]long *pLength);
    HRESULT FindTextStart([in]BSTR bstr, [in]long cch, [in]long Flags, [retval, out]long *pLength);
    HRESULT FindTextEnd([in]BSTR bstr, [in]long cch, [in]long Flags, [retval, out]long *pLength);
    HRESULT Delete([in]long Unit, [in]long Count, [retval, out]long *pDelta);
    HRESULT Cut([out]VARIANT *pVar);
    HRESULT Copy([out]VARIANT *pVar);
    HRESULT Paste([in]VARIANT *pVar, [in]long Format);
    HRESULT CanPaste([in]VARIANT *pVar, [in]long Format, [retval, out]long *pb);
    HRESULT CanEdit([retval, out]long *pb);
    HRESULT ChangeCase([in]long Type);
    HRESULT GetPoint([in]long Type, [out]long *cx, [out]long *cy);
    HRESULT SetPoint([in]long x, [in]long y, [in]long Type, [in]long Extend);
    HRESULT ScrollIntoView([in]long Value);
    HRESULT GetEmbeddedObject([retval, out]IUnknown **ppv);
}

[
  object,
  uuid(8cc497c1-a1df-11ce-8098-00aa0047be5d)
]
interface ITextSelection : ITextRange
{
    HRESULT GetFlags([retval, out]long *pFlags);
    HRESULT SetFlags([in]long Flags);
    HRESULT GetType([retval, out]long *pType);
    HRESULT MoveLeft([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta);
    HRESULT MoveRight([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta);
    HRESULT MoveUp([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta);
    HRESULT MoveDown([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta);
    HRESULT HomeKey([in]long Unit, [in]long Extend, [retval, out]long *pDelta);
    HRESULT EndKey([in]long Unit, [in]long Extend, [retval, out]long *pDelta);
    HRESULT TypeText([in]BSTR bstr);
}

[
  object,
  uuid(8cc497c3-a1df-11ce-8098-00aa0047be5d)
]
interface ITextFont : IDispatch
{
    HRESULT GetDuplicate([retval, out]ITextFont **ppFont);
    HRESULT SetDuplicate([in]ITextFont *pFont);
    HRESULT CanChange([out]long *pB);
    HRESULT IsEqual([in]ITextFont *pFont, [retval, out]long *pB);
    HRESULT Reset([in]long Value);
    HRESULT GetStyle([retval, out]long *pValue);
    HRESULT SetStyle([in]long Value);
    HRESULT GetAllCaps([retval, out]long *pValue);
    HRESULT SetAllCaps([in]long Value);
    HRESULT GetAnimation([retval, out]long *pValue);
    HRESULT SetAnimation([in]long Value);
    HRESULT GetBackColor([retval, out]long *pValue);
    HRESULT SetBackColor([in]long Value);
    HRESULT GetBold([retval, out]long *pValue);
    HRESULT SetBold([in]long Value);
    HRESULT GetEmboss([retval, out]long *pValue);
    HRESULT SetEmboss([in]long Value);
    HRESULT GetForeColor([retval, out]long *pValue);
    HRESULT SetForeColor([in]long Value);
    HRESULT GetHidden([retval, out]long *pValue);
    HRESULT SetHidden([in]long Value);
    HRESULT GetEngrave([retval, out]long *pValue);
    HRESULT SetEngrave([in]long Value);
    HRESULT GetItalic([retval, out]long *pValue);
    HRESULT SetItalic([in]long Value);
    HRESULT GetKerning([retval, out]long *pValue);
    HRESULT SetKerning([in]long Value);
    HRESULT GetLanguageID([retval, out]long *pValue);
    HRESULT SetLanguageID([in]long Value);
    HRESULT GetName([retval, out]BSTR *pValue);
    HRESULT SetName([in]BSTR Value);
    HRESULT GetOutline([retval, out]long *pValue);
    HRESULT SetOutline([in]long Value);
    HRESULT GetPosition([retval, out]long *pValue);
    HRESULT SetPosition([in]long Value);
    HRESULT GetProtected([retval, out]long *pValue);
    HRESULT SetProtected([in]long Value);
    HRESULT GetShadow([retval, out]long *pValue);
    HRESULT SetShadow([in]long Value);
    HRESULT GetSize([retval, out]long *pValue);
    HRESULT SetSize([in]long Value);
    HRESULT GetSmallCaps([retval, out]long *pValue);
    HRESULT SetSmallCaps([in]long Value);
    HRESULT GetSpacing([retval, out]float *pValue);
    HRESULT SetSpacing([in]float Value);
    HRESULT GetStrikeThrough([retval, out]long *pValue);
    HRESULT SetStrikeThrough([in]long Value);
    HRESULT GetSubscript([retval, out]long *pValue);
    HRESULT SetSubscript([in]long Value);
    HRESULT GetSuperscript([retval, out]long *pValue);
    HRESULT SetSuperscript([in]long Value);
    HRESULT GetUnderline([retval, out]long *pValue);
    HRESULT SetUnderline([in]long Value);
    HRESULT GetWeight([retval, out]long *pValue);
    HRESULT SetWeight([in]long Value);
}

[
  object,
  uuid(8cc497c4-a1df-11ce-8098-00aa0047be5d)
]
interface ITextPara : IDispatch
{
    HRESULT GetDuplicate([retval, out]ITextPara **ppPara);
    HRESULT SetDuplicate([in]ITextPara *pPara);
    HRESULT CanChange([out]long *pB);
    HRESULT IsEqual([in]ITextPara *pPara, [retval, out]long *pB);
    HRESULT Reset([in]long Value);
    HRESULT GetStyle([retval, out]long *pValue);
    HRESULT SetStyle([in]long Value);
    HRESULT GetAlignment([retval, out]long *pValue);
    HRESULT SetAlignment([in]long Value);
    HRESULT GetHyphenation([retval, out]long *pValue);
    HRESULT SetHyphenation([in]long Value);
    HRESULT GetFirstLineIndent([retval, out]float *pValue);
    HRESULT GetKeepTogether([retval, out]long *pValue);
    HRESULT SetKeepTogether([in]long Value);
    HRESULT GetKeepWithNext([retval, out]long *pValue);
    HRESULT SetKeepWithNext([in]long Value);
    HRESULT GetLeftIndent([retval, out]float *pValue);
    HRESULT GetLineSpacing([retval, out]float *pValue);
    HRESULT GetLineSpacingRule([retval, out]long *pValue);
    HRESULT GetListAlignment([retval, out]long *pValue);
    HRESULT SetListAlignment([in]long Value);
    HRESULT GetListLevelIndex([retval, out]long *pValue);
    HRESULT SetListLevelIndex([in]long Value);
    HRESULT GetListStart([retval, out]long *pValue);
    HRESULT SetListStart([in]long Value);
    HRESULT GetListTab([retval, out]long *pValue);
    HRESULT SetListTab([in]long Value);
    HRESULT GetListType([retval, out]long *pValue);
    HRESULT SetListType([in]long Value);
    HRESULT GetNoLineNumber([retval, out]long *pValue);
    HRESULT SetNoLineNumber([in]long Value);
    HRESULT GetPageBreakBefore([retval, out]long *pValue);
    HRESULT SetPageBreakBefore([in]long Value);
    HRESULT GetRightIndent([retval, out]float *pValue);
    HRESULT SetRightIndent([in]float Value);
    HRESULT SetIndents([in]float StartIndent, [in]float LeftIndent, [in]float RightIndent);
    HRESULT SetLineSpacing([in]long LineSpacingRule, [in]float LineSpacing);
    HRESULT GetSpaceAfter([retval, out]float *pValue);
    HRESULT SetSpaceAfter([in]float Value);
    HRESULT GetSpaceBefore([retval, out]float *pValue);
    HRESULT SetSpaceBefore([in]float Value);
    HRESULT GetWindowControl([retval, out]float *pValue);
    HRESULT SetWindowControl([in]float Value);
    HRESULT GetTabCount([retval, out]long *pCount);
    HRESULT AddTab([in]float tbPos, [in]long tbAlign, [in]long tbLeader);
    HRESULT ClearAllTabs();
    HRESULT DeleteTab([in]float tbPos);
    HRESULT GetTab([in]long iTab, [out]float *ptbPos, [out]long *ptbAlign, [out]long *ptbLeader);
}

[
  object,
  uuid(8cc497c5-a1df-11ce-8098-00aa0047be5d)
]
interface ITextStoryRanges : IDispatch
{
    HRESULT _NewEnum([retval, out]IUnknown **ppUnkEnum);
    HRESULT Item([in]long Index, [retval, out]ITextRange **ppRange);
    HRESULT GetCount([retval, out]long *pCount);
}
