Writer laid text into a 0.2 cm gap left of a text box, where Word leaves the gap empty. Word gives up a gap under a quarter inch wide, measured from the column edge to the object's wrap boundary, when the other side has at least that much room. Follow the same rule for documents the Word filters read. Change-Id: Ifdacbf0469296ade1665fb0b56526301cd19f973 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211280 Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@collabora.com> Tested-by: Jenkins
305 lines
10 KiB
C++
305 lines
10 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* 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 .
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <sal/types.h>
|
|
#include "fldupde.hxx"
|
|
#include <i18nlangtag/lang.h>
|
|
#include <memory>
|
|
|
|
class SvxForbiddenCharactersTable;
|
|
namespace com::sun::star::i18n
|
|
{
|
|
struct ForbiddenCharacters;
|
|
}
|
|
enum class CharCompressType;
|
|
|
|
enum class DocumentSettingId
|
|
{
|
|
// COMPATIBILITY FLAGS START
|
|
PARA_SPACE_MAX,
|
|
PARA_SPACE_MAX_AT_PAGES,
|
|
|
|
TAB_COMPAT,
|
|
|
|
ADD_FLY_OFFSETS,
|
|
ADD_VERTICAL_FLY_OFFSETS,
|
|
|
|
OLD_NUMBERING,
|
|
|
|
ADD_EXT_LEADING,
|
|
USE_VIRTUAL_DEVICE,
|
|
USE_HIRES_VIRTUAL_DEVICE,
|
|
OLD_LINE_SPACING,
|
|
ADD_PARA_SPACING_TO_TABLE_CELLS,
|
|
ADD_PARA_LINE_SPACING_TO_TABLE_CELLS,
|
|
USE_FORMER_OBJECT_POS,
|
|
USE_FORMER_TEXT_WRAPPING,
|
|
CONSIDER_WRAP_ON_OBJECT_POSITION,
|
|
|
|
IGNORE_FIRST_LINE_INDENT_IN_NUMBERING,
|
|
DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK,
|
|
TREAT_SINGLE_COLUMN_BREAK_AS_PAGE_BREAK,
|
|
DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT,
|
|
// tdf#159382: MS Word compatible handling of space between footnote number and text
|
|
NO_GAP_AFTER_NOTE_NUMBER,
|
|
|
|
DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE,
|
|
TABLE_ROW_KEEP,
|
|
IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION,
|
|
IGNORE_HIDDEN_CHARS_FOR_LINE_CALCULATION,
|
|
CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME,
|
|
|
|
// tdf#104349 tdf#104668
|
|
MS_WORD_COMP_TRAILING_BLANKS,
|
|
// tdf#128197 MS Word in some modes can have line height based on shape height, not on font
|
|
MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY,
|
|
MS_WORD_COMP_MIN_TEXT_WRAP_GAP,
|
|
UNIX_FORCE_ZERO_EXT_LEADING,
|
|
TABS_RELATIVE_TO_INDENT,
|
|
PROTECT_FORM,
|
|
// #i89181#
|
|
TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST,
|
|
INVERT_BORDER_SPACING,
|
|
COLLAPSE_EMPTY_CELL_PARA,
|
|
SMALL_CAPS_PERCENTAGE_66,
|
|
TAB_OVERFLOW,
|
|
UNBREAKABLE_NUMBERINGS,
|
|
CLIPPED_PICTURES,
|
|
BACKGROUND_PARA_OVER_DRAWINGS,
|
|
TAB_OVER_MARGIN,
|
|
TAB_OVER_SPACING,
|
|
// MS Word still wraps text around objects with less space than LO would.
|
|
SURROUND_TEXT_WRAP_SMALL,
|
|
PROP_LINE_SPACING_SHRINKS_FIRST_LINE,
|
|
SUBTRACT_FLYS,
|
|
// tdf#112443 disable off-page content positioning
|
|
DISABLE_OFF_PAGE_POSITIONING,
|
|
EMPTY_DB_FIELD_HIDES_PARA,
|
|
// tdf#129448: Auto first-line indent should not be effected by line space
|
|
AUTO_FIRST_LINE_INDENT_DISREGARD_LINE_SPACE,
|
|
HYPHENATE_URLS, ///< tdf#152952
|
|
DO_NOT_BREAK_WRAPPED_TABLES,
|
|
ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK,
|
|
// tdf#119908 new paragraph justification
|
|
JUSTIFY_LINES_WITH_SHRINKING,
|
|
APPLY_TEXT_ATTR_TO_EMPTY_LINE_AT_END_OF_PARAGRAPH,
|
|
APPLY_PARAGRAPH_MARK_FORMAT_TO_EMPTY_LINE_AT_END_OF_PARAGRAPH,
|
|
HIDDEN_PARAGRAPH_MARK_PER_LINE_PROPERTIES,
|
|
DO_NOT_MIRROR_RTL_DRAW_OBJS,
|
|
// COMPATIBILITY FLAGS END
|
|
BROWSE_MODE,
|
|
HTML_MODE,
|
|
GLOBAL_DOCUMENT,
|
|
GLOBAL_DOCUMENT_SAVE_LINKS,
|
|
LABEL_DOCUMENT,
|
|
PURGE_OLE,
|
|
KERN_ASIAN_PUNCTUATION,
|
|
MATH_BASELINE_ALIGNMENT,
|
|
STYLES_NODEFAULT,
|
|
EMBED_FONTS,
|
|
EMBED_USED_FONTS,
|
|
EMBED_LATIN_SCRIPT_FONTS,
|
|
EMBED_ASIAN_SCRIPT_FONTS,
|
|
EMBED_COMPLEX_SCRIPT_FONTS,
|
|
EMBED_SYSTEM_FONTS,
|
|
APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING,
|
|
CONTINUOUS_ENDNOTES,
|
|
PROTECT_BOOKMARKS,
|
|
PROTECT_FIELDS,
|
|
HEADER_SPACING_BELOW_LAST_PARA,
|
|
FRAME_AUTOWIDTH_WITH_MORE_PARA,
|
|
GUTTER_AT_TOP,
|
|
// footnoteContainer default position is the page end instead of the column end
|
|
// only if "evenly distributed" is set, and "collected at the end" is not set
|
|
FOOTNOTE_IN_COLUMN_TO_PAGEEND,
|
|
// Should we display follow by symbol for numbered paragraph if numbering exists, but "None"?
|
|
NO_NUMBERING_SHOW_FOLLOWBY,
|
|
// drop cap punctuation: smaller dashes, bullet, asterisks, quotation marks etc.
|
|
// by extending the rounding box of the glyph to the baseline
|
|
DROP_CAP_PUNCTUATION,
|
|
// render NBSP as standard-space-width (prettier when justified)
|
|
USE_VARIABLE_WIDTH_NBSP,
|
|
// overlap background shapes if anchored in body
|
|
PAINT_HELL_OVER_HEADER_FOOTER,
|
|
// tdf#155229 calculate minimum row height including horizontal border width
|
|
MIN_ROW_HEIGHT_INCL_BORDER,
|
|
MS_WORD_COMP_GRID_METRICS,
|
|
// tdf#161233 pictures with wrap polygon should not be clipped
|
|
NO_CLIPPING_WITH_WRAP_POLYGON,
|
|
MS_WORD_UL_TRAIL_SPACE,
|
|
// tdf#172113: from a visual perspective, consistently put the line spacing gap below the line,
|
|
// consistently and interoperably determining line heights for all (first/middle/last) lines.
|
|
LINE_SPACING_AS_GAP_BELOW,
|
|
// tdf#88908 optionally adjust normal spaces in CJK context to halfwidth
|
|
BALANCE_SPACES_AND_IDEOGRAPHIC_SPACES,
|
|
// tdf#37153 Word-compatibility: force top-alignment for cells containing a floating shape
|
|
FORCE_TOP_ALIGNMENT_IN_CELL_WITH_FLOATING_ANCHOR,
|
|
// tdf#167583 optionally apply text grid line height to table contents
|
|
ADJUST_TABLE_LINE_HEIGHTS_TO_GRID_HEIGHT,
|
|
// tdf#72640 treat list label alignment as literal left/right, rather than start/end
|
|
LIST_LABEL_ALIGNMENT_IGNORES_DIRECTION,
|
|
};
|
|
|
|
/** Provides access to settings of a document
|
|
*/
|
|
class IDocumentSettingAccess
|
|
{
|
|
public:
|
|
/** Return the specified document setting.
|
|
|
|
@param id
|
|
[in] the identifier of the document setting to be returned.
|
|
See above for a list of valid document setting identifiers.
|
|
|
|
@returns
|
|
the value of the requested document setting.
|
|
*/
|
|
virtual bool get(/*[in]*/ DocumentSettingId id) const = 0;
|
|
|
|
/** Set the specified document setting.
|
|
|
|
@param id
|
|
[in] the identifier of the document setting to be set.
|
|
See above for a list of valid document setting identifiers.
|
|
|
|
@param value
|
|
[in] the new value of the specified document setting.
|
|
*/
|
|
virtual void set(/*[in]*/ DocumentSettingId id, /*[in]*/ bool value) = 0;
|
|
|
|
/** Return the forbidden characters.
|
|
|
|
@param nLang
|
|
[in] the language for which the forbidden character list is returned.
|
|
|
|
@param bLocaleData
|
|
[in] if set and there is no user defined forbidden character list for
|
|
language lang, the default list for language lang will be returned.
|
|
|
|
@returns
|
|
a list of forbidden characters.
|
|
*/
|
|
virtual const css::i18n::ForbiddenCharacters*
|
|
getForbiddenCharacters(/*[in]*/ LanguageType nLang, /*[in]*/ bool bLocaleData) const = 0;
|
|
|
|
/** Set the forbidden characters.
|
|
|
|
@param nLang
|
|
[in] the language for which the forbidden character list should be set.
|
|
|
|
@param rForbiddenCharacters
|
|
[in] the new list of forbidden characters for language lang.
|
|
*/
|
|
virtual void
|
|
setForbiddenCharacters(/*[in]*/ LanguageType nLang,
|
|
/*[in]*/ const css::i18n::ForbiddenCharacters& rForbiddenCharacters)
|
|
= 0;
|
|
|
|
/** Get the forbidden character table and creates one if necessary.
|
|
|
|
@returns
|
|
the forbidden characters table.
|
|
*/
|
|
virtual std::shared_ptr<SvxForbiddenCharactersTable>& getForbiddenCharacterTable() = 0;
|
|
|
|
/** Get the forbidden character table.
|
|
|
|
@returns
|
|
the forbidden characters table.
|
|
*/
|
|
virtual const std::shared_ptr<SvxForbiddenCharactersTable>&
|
|
getForbiddenCharacterTable() const = 0;
|
|
|
|
/** Get the current link update mode.
|
|
|
|
@param bGlobalSettings
|
|
[in] if set, the link update mode is obtained from the module,
|
|
if it is set to GLOBALSETTING
|
|
|
|
@returns
|
|
the current link update mode.
|
|
*/
|
|
virtual sal_uInt16 getLinkUpdateMode(/*[in]*/ bool bGlobalSettings) const = 0;
|
|
|
|
/** Set the current link update mode.
|
|
|
|
@param nMode
|
|
[in] the new link update mode.
|
|
*/
|
|
virtual void setLinkUpdateMode(/*[in]*/ sal_uInt16 nMode) = 0;
|
|
|
|
/** Get the current field update mode.
|
|
|
|
@param bGlobalSettings
|
|
[in] if set, the field update mode is obtained from the module,
|
|
if it is set to GLOBALSETTING
|
|
|
|
@returns
|
|
the current field update mode.
|
|
*/
|
|
virtual SwFieldUpdateFlags getFieldUpdateFlags(/*[in]*/ bool bGlobalSettings) const = 0;
|
|
|
|
/** Set the current field update mode.
|
|
|
|
@param nMode
|
|
[in] the new field update mode.
|
|
*/
|
|
virtual void setFieldUpdateFlags(/*[in]*/ SwFieldUpdateFlags nMode) = 0;
|
|
|
|
/** Get the character compression type for Asian characters.
|
|
|
|
@returns
|
|
the current character compression mode.
|
|
*/
|
|
virtual CharCompressType getCharacterCompressionType() const = 0;
|
|
|
|
/** Set the character compression type for Asian characters.
|
|
|
|
@param nMode
|
|
[in] the new character compression type.
|
|
*/
|
|
virtual void setCharacterCompressionType(/*[in]*/ CharCompressType nType) = 0;
|
|
|
|
/** Get the n32DummyCompatibilityOptions1
|
|
*/
|
|
virtual sal_uInt32 Getn32DummyCompatibilityOptions1() const = 0;
|
|
|
|
/** Set the n32DummyCompatibilityOptions1
|
|
*/
|
|
virtual void Setn32DummyCompatibilityOptions1(const sal_uInt32 CompatibilityOptions1) = 0;
|
|
|
|
/** Get the n32DummyCompatibilityOptions2
|
|
*/
|
|
virtual sal_uInt32 Getn32DummyCompatibilityOptions2() const = 0;
|
|
|
|
/** Set the n32DummyCompatibilityOptions2
|
|
*/
|
|
virtual void Setn32DummyCompatibilityOptions2(const sal_uInt32 CompatibilityOptions2) = 0;
|
|
|
|
virtual sal_Int32 getImagePreferredDPI() = 0;
|
|
virtual void setImagePreferredDPI(sal_Int32 nValue) = 0;
|
|
|
|
protected:
|
|
virtual ~IDocumentSettingAccess(){};
|
|
};
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|