Files
odfstudio/sw/inc/IDocumentSettingAccess.hxx
Samuel Mehrbrodt 5b36e890ec tdf#173649 sw: don't wrap docx text into a narrow gap beside a shape
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
2026-09-21 20:38:58 +02:00

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: */