# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.3.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _features
else:
    import _features

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


class fz_feature_stats(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    num_non_numerals = property(_features.fz_feature_stats_num_non_numerals_get, _features.fz_feature_stats_num_non_numerals_set)
    num_numerals = property(_features.fz_feature_stats_num_numerals_get, _features.fz_feature_stats_num_numerals_set)
    ratio = property(_features.fz_feature_stats_ratio_get, _features.fz_feature_stats_ratio_set)
    char_space = property(_features.fz_feature_stats_char_space_get, _features.fz_feature_stats_char_space_set)
    line_space = property(_features.fz_feature_stats_line_space_get, _features.fz_feature_stats_line_space_set)
    font_size = property(_features.fz_feature_stats_font_size_get, _features.fz_feature_stats_font_size_set)
    num_fonts_in_region = property(_features.fz_feature_stats_num_fonts_in_region_get, _features.fz_feature_stats_num_fonts_in_region_set)
    margin_l = property(_features.fz_feature_stats_margin_l_get, _features.fz_feature_stats_margin_l_set)
    margin_r = property(_features.fz_feature_stats_margin_r_get, _features.fz_feature_stats_margin_r_set)
    margin_t = property(_features.fz_feature_stats_margin_t_get, _features.fz_feature_stats_margin_t_set)
    margin_b = property(_features.fz_feature_stats_margin_b_get, _features.fz_feature_stats_margin_b_set)
    imargin_l = property(_features.fz_feature_stats_imargin_l_get, _features.fz_feature_stats_imargin_l_set)
    imargin_r = property(_features.fz_feature_stats_imargin_r_get, _features.fz_feature_stats_imargin_r_set)
    imargin_t = property(_features.fz_feature_stats_imargin_t_get, _features.fz_feature_stats_imargin_t_set)
    imargin_b = property(_features.fz_feature_stats_imargin_b_get, _features.fz_feature_stats_imargin_b_set)
    fonts_offset = property(_features.fz_feature_stats_fonts_offset_get, _features.fz_feature_stats_fonts_offset_set)
    linespaces_offset = property(_features.fz_feature_stats_linespaces_offset_get, _features.fz_feature_stats_linespaces_offset_set)
    num_underlines = property(_features.fz_feature_stats_num_underlines_get, _features.fz_feature_stats_num_underlines_set)
    top_left_x = property(_features.fz_feature_stats_top_left_x_get, _features.fz_feature_stats_top_left_x_set)
    bottom_right_x = property(_features.fz_feature_stats_bottom_right_x_get, _features.fz_feature_stats_bottom_right_x_set)
    num_lines = property(_features.fz_feature_stats_num_lines_get, _features.fz_feature_stats_num_lines_set)
    max_non_first_left_indent = property(_features.fz_feature_stats_max_non_first_left_indent_get, _features.fz_feature_stats_max_non_first_left_indent_set)
    max_non_last_right_indent = property(_features.fz_feature_stats_max_non_last_right_indent_get, _features.fz_feature_stats_max_non_last_right_indent_set)
    smargin_l = property(_features.fz_feature_stats_smargin_l_get, _features.fz_feature_stats_smargin_l_set)
    smargin_t = property(_features.fz_feature_stats_smargin_t_get, _features.fz_feature_stats_smargin_t_set)
    smargin_r = property(_features.fz_feature_stats_smargin_r_get, _features.fz_feature_stats_smargin_r_set)
    smargin_b = property(_features.fz_feature_stats_smargin_b_get, _features.fz_feature_stats_smargin_b_set)
    dodgy_paragraph_breaks = property(_features.fz_feature_stats_dodgy_paragraph_breaks_get, _features.fz_feature_stats_dodgy_paragraph_breaks_set)
    last_char_rect = property(_features.fz_feature_stats_last_char_rect_get, _features.fz_feature_stats_last_char_rect_set)
    is_header = property(_features.fz_feature_stats_is_header_get, _features.fz_feature_stats_is_header_set)
    context_above_font_size = property(_features.fz_feature_stats_context_above_font_size_get, _features.fz_feature_stats_context_above_font_size_set)
    context_above_is_header = property(_features.fz_feature_stats_context_above_is_header_get, _features.fz_feature_stats_context_above_is_header_set)
    context_above_indent = property(_features.fz_feature_stats_context_above_indent_get, _features.fz_feature_stats_context_above_indent_set)
    context_above_outdent = property(_features.fz_feature_stats_context_above_outdent_get, _features.fz_feature_stats_context_above_outdent_set)
    context_below_font_size = property(_features.fz_feature_stats_context_below_font_size_get, _features.fz_feature_stats_context_below_font_size_set)
    context_below_is_header = property(_features.fz_feature_stats_context_below_is_header_get, _features.fz_feature_stats_context_below_is_header_set)
    context_below_indent = property(_features.fz_feature_stats_context_below_indent_get, _features.fz_feature_stats_context_below_indent_set)
    context_below_outdent = property(_features.fz_feature_stats_context_below_outdent_get, _features.fz_feature_stats_context_below_outdent_set)
    context_below_bullet = property(_features.fz_feature_stats_context_below_bullet_get, _features.fz_feature_stats_context_below_bullet_set)
    context_header_differs = property(_features.fz_feature_stats_context_header_differs_get, _features.fz_feature_stats_context_header_differs_set)
    line_bullets = property(_features.fz_feature_stats_line_bullets_get, _features.fz_feature_stats_line_bullets_set)
    non_line_bullets = property(_features.fz_feature_stats_non_line_bullets_get, _features.fz_feature_stats_non_line_bullets_set)
    consecutive_left_alignment_count_up = property(_features.fz_feature_stats_consecutive_left_alignment_count_up_get, _features.fz_feature_stats_consecutive_left_alignment_count_up_set)
    consecutive_centre_alignment_count_up = property(_features.fz_feature_stats_consecutive_centre_alignment_count_up_get, _features.fz_feature_stats_consecutive_centre_alignment_count_up_set)
    consecutive_right_alignment_count_up = property(_features.fz_feature_stats_consecutive_right_alignment_count_up_get, _features.fz_feature_stats_consecutive_right_alignment_count_up_set)
    consecutive_centre_alignment_count_down = property(_features.fz_feature_stats_consecutive_centre_alignment_count_down_get, _features.fz_feature_stats_consecutive_centre_alignment_count_down_set)
    consecutive_left_alignment_count_down = property(_features.fz_feature_stats_consecutive_left_alignment_count_down_get, _features.fz_feature_stats_consecutive_left_alignment_count_down_set)
    consecutive_right_alignment_count_down = property(_features.fz_feature_stats_consecutive_right_alignment_count_down_get, _features.fz_feature_stats_consecutive_right_alignment_count_down_set)
    consecutive_top_alignment_count_left = property(_features.fz_feature_stats_consecutive_top_alignment_count_left_get, _features.fz_feature_stats_consecutive_top_alignment_count_left_set)
    consecutive_middle_alignment_count_left = property(_features.fz_feature_stats_consecutive_middle_alignment_count_left_get, _features.fz_feature_stats_consecutive_middle_alignment_count_left_set)
    consecutive_baseline_alignment_count_left = property(_features.fz_feature_stats_consecutive_baseline_alignment_count_left_get, _features.fz_feature_stats_consecutive_baseline_alignment_count_left_set)
    consecutive_bottom_alignment_count_left = property(_features.fz_feature_stats_consecutive_bottom_alignment_count_left_get, _features.fz_feature_stats_consecutive_bottom_alignment_count_left_set)
    consecutive_top_alignment_count_right = property(_features.fz_feature_stats_consecutive_top_alignment_count_right_get, _features.fz_feature_stats_consecutive_top_alignment_count_right_set)
    consecutive_middle_alignment_count_right = property(_features.fz_feature_stats_consecutive_middle_alignment_count_right_get, _features.fz_feature_stats_consecutive_middle_alignment_count_right_set)
    consecutive_baseline_alignment_count_right = property(_features.fz_feature_stats_consecutive_baseline_alignment_count_right_get, _features.fz_feature_stats_consecutive_baseline_alignment_count_right_set)
    consecutive_bottom_alignment_count_right = property(_features.fz_feature_stats_consecutive_bottom_alignment_count_right_get, _features.fz_feature_stats_consecutive_bottom_alignment_count_right_set)
    alignment_up_with_left = property(_features.fz_feature_stats_alignment_up_with_left_get, _features.fz_feature_stats_alignment_up_with_left_set)
    alignment_up_with_centre = property(_features.fz_feature_stats_alignment_up_with_centre_get, _features.fz_feature_stats_alignment_up_with_centre_set)
    alignment_up_with_right = property(_features.fz_feature_stats_alignment_up_with_right_get, _features.fz_feature_stats_alignment_up_with_right_set)
    alignment_down_with_left = property(_features.fz_feature_stats_alignment_down_with_left_get, _features.fz_feature_stats_alignment_down_with_left_set)
    alignment_down_with_centre = property(_features.fz_feature_stats_alignment_down_with_centre_get, _features.fz_feature_stats_alignment_down_with_centre_set)
    alignment_down_with_right = property(_features.fz_feature_stats_alignment_down_with_right_get, _features.fz_feature_stats_alignment_down_with_right_set)
    alignment_left_with_top = property(_features.fz_feature_stats_alignment_left_with_top_get, _features.fz_feature_stats_alignment_left_with_top_set)
    alignment_left_with_middle = property(_features.fz_feature_stats_alignment_left_with_middle_get, _features.fz_feature_stats_alignment_left_with_middle_set)
    alignment_left_with_baseline = property(_features.fz_feature_stats_alignment_left_with_baseline_get, _features.fz_feature_stats_alignment_left_with_baseline_set)
    alignment_left_with_bottom = property(_features.fz_feature_stats_alignment_left_with_bottom_get, _features.fz_feature_stats_alignment_left_with_bottom_set)
    alignment_right_with_top = property(_features.fz_feature_stats_alignment_right_with_top_get, _features.fz_feature_stats_alignment_right_with_top_set)
    alignment_right_with_middle = property(_features.fz_feature_stats_alignment_right_with_middle_get, _features.fz_feature_stats_alignment_right_with_middle_set)
    alignment_right_with_baseline = property(_features.fz_feature_stats_alignment_right_with_baseline_get, _features.fz_feature_stats_alignment_right_with_baseline_set)
    alignment_right_with_bottom = property(_features.fz_feature_stats_alignment_right_with_bottom_get, _features.fz_feature_stats_alignment_right_with_bottom_set)
    ray_line_distance_up = property(_features.fz_feature_stats_ray_line_distance_up_get, _features.fz_feature_stats_ray_line_distance_up_set)
    ray_line_distance_down = property(_features.fz_feature_stats_ray_line_distance_down_get, _features.fz_feature_stats_ray_line_distance_down_set)
    ray_line_distance_left = property(_features.fz_feature_stats_ray_line_distance_left_get, _features.fz_feature_stats_ray_line_distance_left_set)
    ray_line_distance_right = property(_features.fz_feature_stats_ray_line_distance_right_get, _features.fz_feature_stats_ray_line_distance_right_set)
    raft_num = property(_features.fz_feature_stats_raft_num_get, _features.fz_feature_stats_raft_num_set)
    raft_edge_up = property(_features.fz_feature_stats_raft_edge_up_get, _features.fz_feature_stats_raft_edge_up_set)
    raft_edge_down = property(_features.fz_feature_stats_raft_edge_down_get, _features.fz_feature_stats_raft_edge_down_set)
    raft_edge_left = property(_features.fz_feature_stats_raft_edge_left_get, _features.fz_feature_stats_raft_edge_left_set)
    raft_edge_right = property(_features.fz_feature_stats_raft_edge_right_get, _features.fz_feature_stats_raft_edge_right_set)
    inner_l = property(_features.fz_feature_stats_inner_l_get, _features.fz_feature_stats_inner_l_set)
    inner_t = property(_features.fz_feature_stats_inner_t_get, _features.fz_feature_stats_inner_t_set)
    inner_r = property(_features.fz_feature_stats_inner_r_get, _features.fz_feature_stats_inner_r_set)
    inner_b = property(_features.fz_feature_stats_inner_b_get, _features.fz_feature_stats_inner_b_set)
    topmost_baseline = property(_features.fz_feature_stats_topmost_baseline_get, _features.fz_feature_stats_topmost_baseline_set)
    bottommost_baseline = property(_features.fz_feature_stats_bottommost_baseline_get, _features.fz_feature_stats_bottommost_baseline_set)
    centre = property(_features.fz_feature_stats_centre_get, _features.fz_feature_stats_centre_set)
    middle = property(_features.fz_feature_stats_middle_get, _features.fz_feature_stats_middle_set)
    nearest_nonaligned_up_left = property(_features.fz_feature_stats_nearest_nonaligned_up_left_get, _features.fz_feature_stats_nearest_nonaligned_up_left_set)
    nearest_nonaligned_up_centre = property(_features.fz_feature_stats_nearest_nonaligned_up_centre_get, _features.fz_feature_stats_nearest_nonaligned_up_centre_set)
    nearest_nonaligned_up_right = property(_features.fz_feature_stats_nearest_nonaligned_up_right_get, _features.fz_feature_stats_nearest_nonaligned_up_right_set)
    nearest_nonaligned_down_left = property(_features.fz_feature_stats_nearest_nonaligned_down_left_get, _features.fz_feature_stats_nearest_nonaligned_down_left_set)
    nearest_nonaligned_down_centre = property(_features.fz_feature_stats_nearest_nonaligned_down_centre_get, _features.fz_feature_stats_nearest_nonaligned_down_centre_set)
    nearest_nonaligned_down_right = property(_features.fz_feature_stats_nearest_nonaligned_down_right_get, _features.fz_feature_stats_nearest_nonaligned_down_right_set)
    nearest_nonaligned_left_top = property(_features.fz_feature_stats_nearest_nonaligned_left_top_get, _features.fz_feature_stats_nearest_nonaligned_left_top_set)
    nearest_nonaligned_left_middle = property(_features.fz_feature_stats_nearest_nonaligned_left_middle_get, _features.fz_feature_stats_nearest_nonaligned_left_middle_set)
    nearest_nonaligned_left_baseline = property(_features.fz_feature_stats_nearest_nonaligned_left_baseline_get, _features.fz_feature_stats_nearest_nonaligned_left_baseline_set)
    nearest_nonaligned_left_bottom = property(_features.fz_feature_stats_nearest_nonaligned_left_bottom_get, _features.fz_feature_stats_nearest_nonaligned_left_bottom_set)
    nearest_nonaligned_right_top = property(_features.fz_feature_stats_nearest_nonaligned_right_top_get, _features.fz_feature_stats_nearest_nonaligned_right_top_set)
    nearest_nonaligned_right_middle = property(_features.fz_feature_stats_nearest_nonaligned_right_middle_get, _features.fz_feature_stats_nearest_nonaligned_right_middle_set)
    nearest_nonaligned_right_baseline = property(_features.fz_feature_stats_nearest_nonaligned_right_baseline_get, _features.fz_feature_stats_nearest_nonaligned_right_baseline_set)
    nearest_nonaligned_right_bottom = property(_features.fz_feature_stats_nearest_nonaligned_right_bottom_get, _features.fz_feature_stats_nearest_nonaligned_right_bottom_set)
    char_area = property(_features.fz_feature_stats_char_area_get, _features.fz_feature_stats_char_area_set)
    numeral_ratio = property(_features.fz_feature_stats_numeral_ratio_get, _features.fz_feature_stats_numeral_ratio_set)
    segment = property(_features.fz_feature_stats_segment_get, _features.fz_feature_stats_segment_set)
    line_within_block = property(_features.fz_feature_stats_line_within_block_get, _features.fz_feature_stats_line_within_block_set)
    num_lines_in_block = property(_features.fz_feature_stats_num_lines_in_block_get, _features.fz_feature_stats_num_lines_in_block_set)
    table_element = property(_features.fz_feature_stats_table_element_get, _features.fz_feature_stats_table_element_set)
    table_num = property(_features.fz_feature_stats_table_num_get, _features.fz_feature_stats_table_num_set)
    font_size_mode = property(_features.fz_feature_stats_font_size_mode_get, _features.fz_feature_stats_font_size_mode_set)
    font_size_median = property(_features.fz_feature_stats_font_size_median_get, _features.fz_feature_stats_font_size_median_set)
    invisible = property(_features.fz_feature_stats_invisible_get, _features.fz_feature_stats_invisible_set)
    contains_vector = property(_features.fz_feature_stats_contains_vector_get, _features.fz_feature_stats_contains_vector_set)
    contains_image = property(_features.fz_feature_stats_contains_image_get, _features.fz_feature_stats_contains_image_set)

    def __init__(self):
        _features.fz_feature_stats_swiginit(self, _features.new_fz_feature_stats())
    __swig_destroy__ = _features.delete_fz_feature_stats

# Register fz_feature_stats in _features:
_features.fz_feature_stats_swigregister(fz_feature_stats)

def fz_new_page_features(ctx, page):
    return _features.fz_new_page_features(ctx, page)

def fz_drop_page_features(ctx, features):
    return _features.fz_drop_page_features(ctx, features)

def features_test(t):
    return _features.features_test(t)

def fz_features_for_region(*args):
    return _features.fz_features_for_region(*args)

