6e8819f29b
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 commit9574a62add
"tdf#132599 cui offapi sw xmloff: implement hyphenate-keep" and commitc8ee0e8f58
"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>
479 lines
13 KiB
Text
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
|