office-gobmx/svx/sdi/svxitems.sdi
László Németh 6e8819f29b tdf#132599 cui offapi sw xmloff: add hyphenation-keep-type
Support XSL attribute "column" and CSS 4 attribute "spread",
stored in loext:hyphenation-keep-type, to give better control
over hyphenation-keep. E.g. spread: both parts of a hyphenated
word shall lie within a single spread, i.e. when the next page
is not visible at the same time (e.g. the next page is not a
right page of a book).

– css::style::ParaHyphenationKeep is a boolean property now,
  importing hyphenation-keep = "page" as true.

– type of ParaHyphenationKeep, including the new non-ODF types
  is stored in the new ParagraphProperties::ParaHyphenationKeepType.

– default value of ParaHyphenationKeepType is COLUMN for
  interoperability.

– Add checkboxes to Text Flow -> Hyphenation Across in
  paragraph dialog:

  * Column (previously: Hyphenate across column and page)
  * Page
  * Spread

  – enabling/disabling them follows XSL/CSS 4/loext, i.e.
    possible combinations:

  * No Hyphenation across
    (hyphenation-keep = "page" and loext:hyphenation-keep-type = "column")

  * Hyphenation across [x] Column
    (hyphenation-keep = "page" and loext:hyphenation-keep-type = "page")

  * Hyphenation across [x] Column [x] Page
    (hyphenation-keep = "page" and loext:hyphenation-keep-type = "spread")

  * Hyphenation across [x] Column [x] Page [x] Spread
    (hyphenation-keep = "auto")

– Add ODF import/export

– Update DOCX import

– Add ODF unit tests

Note: recent implementation depends on widow settings: disabling widow
handling allows hyphenation across columns and pages not only in table
cells.

Note: RTF import-only, but not used bPageEnd has been renamed to bKeep.
Depending on the RTF test results, likely it will need to disable
the layout change, e.g. GetKeepType()=ParagraphHyphenationKeepType::AUTO,
if PageEnd uses obsolete hyphenation rule, i.e. shifting only the
hyphenated word to the next page, not the full line.

More information:

– COLUMN (standard XSL value, defined in
  https://www.w3.org/TR/2001/REC-xsl-20011015/slice7.html#hyphenation-keep)

– SPREAD and ALWAYS (CSS 4 values of hyphenate-limit-last,
  equivalent of hyphenation-keep, defined in
  https://www.w3.org/TR/css-text-4/#hyphenate-line-limits).

Follow-up to commit 9574a62add
"tdf#132599 cui offapi sw xmloff: implement hyphenate-keep" and
commit c8ee0e8f58
"tdf160518 DOCX: import hyphenation-keep to fix layout".

Change-Id: I3ac6d9e86d0ed1646f105de8607c0e8ebc534eaa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165954
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
2024-04-11 10:20:41 +02:00

479 lines
13 KiB
Text

/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
enum SvxCellHorJustifyEnum
{
SVX_HOR_JUSTIFY_STANDARD,
SVX_HOR_JUSTIFY_LEFT,
SVX_HOR_JUSTIFY_CENTER,
SVX_HOR_JUSTIFY_RIGHT,
SVX_HOR_JUSTIFY_BLOCK,
SVX_HOR_JUSTIFY_REPEAT
};
enum SvxCellVerJustifyEnum
{
SVX_VER_JUSTIFY_STANDARD,
SVX_VER_JUSTIFY_TOP,
SVX_VER_JUSTIFY_CENTER,
SVX_VER_JUSTIFY_BOTTOM
};
enum SvxCellOrientationEnum
{
SVX_ORIENTATION_STANDARD,
SVX_ORIENTATION_TOPBOTTOM,
SVX_ORIENTATION_BOTTOMTOP,
SVX_ORIENTATION_STACKED
};
enum SvxAdjust
{
SVX_ADJUST_LEFT,
SVX_ADJUST_RIGHT,
SVX_ADJUST_BLOCK,
SVX_ADJUST_CENTER,
SVX_ADJUST_BLOCKLINE,
SVX_ADJUST_END
};
struct SvxAdjustStruct
{
SvxAdjust ParagraphAdjustment MID_PARA_ADJUST;
SvxAdjust LastLineAdjustment MID_LAST_LINE_ADJUST;
BOOL ExpandSingleWord MID_EXPAND_SINGLE;
};
item SvxAdjustStruct SvxAdjustItem;
enum SvxCaseMap
{
SVX_CASEMAP_NOT_MAPPED,
SVX_CASEMAP_UPPERCASE,
SVX_CASEMAP_LOWERCASE,
SVX_CASEMAP_TITLE,
SVX_CASEMAP_SMALLCAPS,
SVX_CASEMAP_END
};
item SvxCaseMap SvxCaseMapItem;
enum CharSet
{
CHARSET_DONTKNOW,
CHARSET_ANSI,
CHARSET_MAC,
CHARSET_IBMPC_437,
CHARSET_IBMPC_850,
CHARSET_IBMPC_860,
CHARSET_IBMPC_861,
CHARSET_IBMPC_863,
CHARSET_IBMPC_865,
CHARSET_SYSTEM,
CHARSET_SYMBOL
};
enum FontFamily
{
FAMILY_DONTKNOW,
FAMILY_DECORATIVE,
FAMILY_MODERN,
FAMILY_ROMAN,
FAMILY_SCRIPT,
FAMILY_SWISS,
FAMILY_SYSTEM
};
enum FontPitch
{
PITCH_DONTKNOW,
PITCH_FIXED,
PITCH_VARIABLE
};
struct SvxFont
{
String StyleName MID_FONT_STYLE_NAME;
FontPitch Pitch MID_FONT_PITCH; // INT16
CharSet CharSet MID_FONT_CHAR_SET; // INT16
FontFamily Family MID_FONT_FAMILY; // INT16
String FamilyName MID_FONT_FAMILY_NAME;
};
item SvxFont SvxFontItem;
enum FontWeight
{
WEIGHT_DONTKNOW,
WEIGHT_THIN,
WEIGHT_ULTRALIGHT,
WEIGHT_LIGHT,
WEIGHT_SEMILIGHT,
WEIGHT_NORMAL,
WEIGHT_MEDIUM,
WEIGHT_SEMIBOLD,
WEIGHT_BOLD,
WEIGHT_ULTRABOLD,
WEIGHT_BLACK
};
item FontWeight SvxWeightItem;
enum FontUnderline
{
UNDERLINE_NONE,
UNDERLINE_SINGLE,
UNDERLINE_DOUBLE,
UNDERLINE_DOTTED
};
enum FontStrikeout
{
STRIKEOUT_NONE,
STRIKEOUT_SINGLE,
STRIKEOUT_DOUBLE
};
enum FontItalic
{
ITALIC_NONE,
ITALIC_OBLIQUE,
ITALIC_NORMAL
};
item FontItalic SvxPostureItem;
enum SvxShadowLocation
{
SVX_SHADOW_NONE,
SVX_SHADOW_TOPLEFT,
SVX_SHADOW_TOPRIGHT,
SVX_SHADOW_BOTTOMLEFT,
SVX_SHADOW_BOTTOMRIGHT,
SVX_SHADOW_END
};
item SvxShadowLocation SvxShadowLocationItem;
item INT16 SvxCharScaleWidthItem;
item INT16 SvxParaVertAlignItem;
item INT16 SvxCharReliefItem;
item BOOL SvxBlinkItem;
item BOOL SvxAutoKernItem;
struct SvxColor
{
INT32 Color MID_COLOR_RGB;
String ComplexColorJSON MID_COMPLEX_COLOR_JSON;
};
item SvxColor SvxColorItem;
item BOOL SvxContourItem;
item INT16 SvxFormatBreakItem; // enum
item BOOL SvxFormatKeepItem;
item BOOL SvxFormatSplitItem;
item INT16 SvxKerningItem;
item INT16 SvxLanguageItem;
item BYTE SvxOrphansItem;
item BYTE SvxPaperBinItem;
item String SvxPostItAuthorItem;
item String SvxPostItDateItem;
item String SvxPostItTextItem;
item INT32 SvxPostItIdItem;
item FontItalic SvxPostureItem; // enum
item BOOL SvxPrintItem;
item UINT16 SvxPropSizeItem; // derived from UInt16Item
item BOOL SvxShadowedItem;
item BYTE SvxWidowsItem;
item BOOL SvxWordLineModeItem;
item SvxCellHorJustifyEnum SvxHorJustifyItem;
item SvxCellVerJustifyEnum SvxVerJustifyItem;
item SvxCellOrientationEnum SvxOrientationItem;
item BOOL SdrOnOffItem;
item INT32 SdrAngleItem; // derived from SfxInt32Item
item INT16 SdrTextFitToSizeTypeItem; // enum
item String SfxStringListItem; // serialized into one concatenated string
item double SvxDoubleItem;
item String OfaXColorListItem;
item String SvxDashListItem;
item String SvxLineEndListItem;
item String SvxColorListItem;
item String SvxGradientListItem;
item String SvxHatchListItem;
item String SvxBitmapListItem;
item String SvxPatternListItem;
item String SfxLockBytesItem;
item String SvxFontListItem;
item String avmedia_MediaItem;
struct XColor
{
INT32 Color MID_COLOR_RGB;
String ComplexColorJSON MID_COMPLEX_COLOR_JSON;
};
item XColor XColorItem;
item INT16 SdrPercentItem;
item INT32 SdrMetricItem;
item BYTE SfxGlobalNameItem;
struct SvxCrossedOut
{
FontStrikeout Kind MID_CROSS_OUT;
};
item SvxCrossedOut SvxCrossedOutItem;
struct SvxTextLine
{
FontUnderline LineStyle MID_TL_STYLE;
BOOL HasColor MID_TL_HASCOLOR;
INT32 Color MID_TL_COLOR;
};
item SvxTextLine SvxUnderlineItem;
item SvxTextLine SvxOverlineItem;
struct SvxBrush
{
BOOL Transparent MID_GRAPHIC_TRANSPARENT;
INT32 BackColor MID_BACK_COLOR;
String URL MID_GRAPHIC_URL;
String Filtername MID_GRAPHIC_FILTER;
INT16 Position MID_GRAPHIC_POSITION;
};
item SvxBrush SvxBrushItem;
struct SvxEscapement
{
INT16 Escapement MID_ESC;
BYTE Height MID_ESC_HEIGHT;
BOOL Auto MID_AUTO_ESC;
};
item SvxEscapement SvxEscapementItem;
struct SvxFontHeight
{
float Height MID_FONTHEIGHT; // may be converted to INT32
INT16 Prop MID_FONTHEIGHT_PROP;
float Diff MID_FONTHEIGHT_DIFF; // may be converted to INT32
};
item SvxFontHeight SvxFontHeightItem;
struct SvxHyphenZone
{
BOOL Hyphen MID_IS_HYPHEN;
INT16 MinLead MID_HYPHEN_MIN_LEAD;
INT16 MinTrail MID_HYPHEN_MIN_TRAIL;
INT16 MaxHyphens MID_HYPHEN_MAX_HYPHENS;
INT16 MinWordLength MID_HYPHEN_MIN_WORD_LENGTH;
INT16 HyphenZone MID_HYPHEN_ZONE;
BOOL HyphenKeep MID_HYPHEN_KEEP;
INT16 HyphenKeepType MID_HYPHEN_KEEP_TYPE;
INT16 MinLead MID_HYPHEN_COMPOUND_MIN_LEAD;
};
item SvxHyphenZone SvxHyphenZoneItem;
struct SvxLine
{
INT32 LineFGColor MID_FG_COLOR;
INT32 LineOutWidth MID_OUTER_WIDTH;
INT32 LineInWidth MID_INNER_WIDTH;
INT32 LineDistance MID_DISTANCE;
};
item SvxLine SvxLineItem;
struct SvxLRSpace
{
INT32 LeftMargin MID_L_MARGIN; // % or direct
INT32 TextLeftMargin MID_TXT_LMARGIN;
INT32 RightMargin MID_R_MARGIN; // % or direct
INT16 LeftRelMargin MID_L_REL_MARGIN;
INT16 RightRelMargin MID_R_REL_MARGIN;
INT32 FirstLineIndent MID_FIRST_LINE_INDENT; // % or direct
INT32 FirstLineRelIdent MID_FIRST_LINE_REL_INDENT;
BOOL AutoFirst MID_FIRST_AUTO;
};
item SvxLRSpace SvxLRSpaceItem;
struct SvxLineSpacing
{
INT16 Mode MID_LINESPACE;
INT16 Height MID_HEIGHT;
};
item SvxLineSpacing SvxLineSpacingItem;
struct SvxPage
{
BOOL Landscape MID_PAGE_ORIENTATION;
INT16 Layout MID_PAGE_LAYOUT;
INT16 NumType MID_PAGE_NUMTYPE;
};
item SvxPage SvxPageItem;
struct SvxPagePosSize
{
INT32 XPos MID_X; // ???
INT32 YPos MID_Y; // ???
INT32 Width MID_WIDTH; // ???
INT32 Height MID_HEIGHT; // ???
};
item SvxPagePosSize SvxPagePosSizeItem;
struct SvxShadow
{
SvxShadowLocation Location MID_LOCATION;
INT16 Width MID_WIDTH;
BOOL IsTransparent MID_TRANSPARENT;
INT32 Color MID_BG_COLOR;
};
item SvxShadow SvxShadowItem;
struct SvxULSpace
{
INT32 TopMargin MID_UP_MARGIN; // % or direct
INT32 BottomMargin MID_LO_MARGIN; // % or direct
BOOL ContextMargin MID_CTX_MARGIN;
INT16 TopRelMargin MID_UP_REL_MARGIN;
INT16 BottomRelMargin MID_LO_REL_MARGIN;
};
item SvxULSpace SvxULSpaceItem
struct SvxLongLRSpace
{
INT32 Left MID_LEFT; // ???
INT32 Right MID_RIGHT; // ???
};
item SvxLongLRSpace SvxLongLRSpaceItem;
struct SvxLongULSpace
{
INT32 Upper MID_UPPER; // ???
INT32 Lower MID_LOWER; // ???
};
item SvxLongULSpace SvxLongULSpaceItem;
struct SvxHyperlink
{
String Text MID_HLINK_TEXT;
String URL MID_HLINK_URL;
String Target MID_HLINK_TARGET;
String Name MID_HLINK_NAME;
INT32 Type MID_HLINK_TYPE;
String ReplacementText MID_HLINK_REPLACEMENTTEXT
};
item SvxHyperlink SvxHyperlinkItem;
struct PageModel
{
BOOL Auto MID_AUTO;
String Name MID_NAME;
};
item PageModel SvxPageModelItem;
struct SvxProtect
{
BOOL Content MID_PROTECT_CONTENT;
BOOL Size MID_PROTECT_SIZE;
BOOL Position MID_PROTECT_POSITION;
};
item SvxProtect SvxProtectItem;
struct SvxRulerObject
{
INT32 StartX MID_START_X;
INT32 StartY MID_START_Y;
INT32 EndX MID_END_X;
INT32 EndY MID_END_Y;
BOOL Limited MID_LIMIT;
};
item SvxRulerObject SvxObjectItem;
item String LineBorder; // dummy for sequence
struct SvxBox
{
LineBorder LeftBorder MID_LEFT_BORDER;
INT32 LeftDistance LEFT_BORDER_DISTANCE;
LineBorder RightBorder MID_RIGHT_BORDER;
INT32 RightDistance RIGHT_BORDER_DISTANCE;
LineBorder TopBorder MID_TOP_BORDER;
INT32 TopDistance TOP_BORDER_DISTANCE;
LineBorder BottomBorder MID_BOTTOM_BORDER;
INT32 BottomDistance BOTTOM_BORDER_DISTANCE;
};
item SvxBox SvxBoxItem;
struct SvxBoxInfo
{
LineBorder Horizontal MID_HORIZONTAL;
LineBorder Vertical MID_VERTICAL;
INT16 Flags MID_FLAGS;
INT16 ValidFlags MID_VALIDFLAGS;
INT32 DefaultDistance MID_DISTANCE;
};
item SvxBoxInfo SvxBoxInfoItem;
item String SvxColumns; // dummy for sequence
struct SvxColumnDescription
{
SvxColumns Columns MID_COLUMNARRAY; // currently not implemented
INT32 Left MID_LEFT;
INT32 Right MID_RIGHT;
INT32 Actual MID_ACTUAL;
BOOL Orthogonal MID_ORTHO;
BOOL Table MID_TABLE;
};
item SvxColumnDescription SvxColumnItem;
struct SvxTabStop
{
String TabStops MID_TABSTOPS; // dummy, will be represented by array of structs
//INT32 StandardTabStop MID_STD_TAB;
};
item SvxTabStop SvxTabStopItem;
struct SvxCharRotate
{
INT16 Rotation MID_ROTATE;
BOOL FitToLine MID_FITTOLINE;
};
item SvxCharRotate SvxCharRotateItem;
item String SfxSetItem; // dummy
item INT16 SvxRotateModeItem; // enum
struct SvxMargin
{
INT32 LeftMargin MID_MARGIN_L_MARGIN;
INT32 RightMargin MID_MARGIN_R_MARGIN;
INT32 UpperMargin MID_MARGIN_UP_MARGIN;
INT32 LowerMargin MID_MARGIN_LO_MARGIN;
};
item SvxMargin SvxMarginItem;
struct SvxEmphasisMark
{
INT32 Emphasis MID_EMPHASIS;
};
item SvxEmphasisMark SvxEmphasisMarkItem;
item String SvxSmartTagItem; // dummy for sequence
item String Points; // dummy for sequence
struct ZoomSlider
{
INT16 CurrentZoom MID_ZOOMSLIDER_CURRENTZOOM;
Points SnappingPoints MID_ZOOMSLIDER_SNAPPINGPOINTS;
INT16 SvxMinZoom MID_ZOOMSLIDER_MINZOOM;
INT16 SvxMaxZoom MID_ZOOMSLIDER_MAXZOOM;
};
item ZoomSlider SvxZoomSliderItem;
item String SvxGalleryItem; // dummy for sequence