Blender V4.3
grease_pencil_fill.cc File Reference
#include "BLI_color.hh"
#include "BLI_index_mask.hh"
#include "BLI_math_base.hh"
#include "BLI_math_matrix.hh"
#include "BLI_math_vector.hh"
#include "BLI_offset_indices.hh"
#include "BLI_rect.h"
#include "BLI_stack.hh"
#include "BLI_task.hh"
#include "BKE_attribute.hh"
#include "BKE_camera.h"
#include "BKE_context.hh"
#include "BKE_crazyspace.hh"
#include "BKE_curves.hh"
#include "BKE_grease_pencil.hh"
#include "BKE_image.hh"
#include "BKE_lib_id.hh"
#include "BKE_material.h"
#include "BKE_paint.hh"
#include "DNA_curves_types.h"
#include "DNA_grease_pencil_types.h"
#include "DNA_material_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_view3d_types.h"
#include "DEG_depsgraph_query.hh"
#include "ED_grease_pencil.hh"
#include "ED_view3d.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "GPU_state.hh"
#include <list>
#include <optional>

Go to the source code of this file.

Classes

class  blender::ed::greasepencil::ImageBufferAccessor
 
struct  blender::ed::greasepencil::FillBoundary
 

Namespaces

namespace  blender
 
namespace  blender::ed
 
namespace  blender::ed::greasepencil
 

Functions

static IndexMask blender::ed::greasepencil::get_visible_boundary_strokes (const Object &object, const DrawingInfo &info, const bool is_boundary_layer, IndexMaskMemory &memory)
 
static VArray< ColorGeometry4fblender::ed::greasepencil::get_stroke_colors (const Object &object, const bke::CurvesGeometry &curves, const VArray< float > &opacities, const VArray< int > materials, const ColorGeometry4f &tint_color, const std::optional< float > alpha_threshold)
 
static rctf blender::ed::greasepencil::get_region_bounds (const ARegion &region)
 
static rctf blender::ed::greasepencil::get_boundary_bounds (const ARegion &region, const RegionView3D &rv3d, const Object &object, const Object &object_eval, const VArray< bool > &boundary_layers, const Span< DrawingInfo > src_drawings)
 
static auto blender::ed::greasepencil::fit_strokes_to_view (const ViewContext &view_context, const VArray< bool > &boundary_layers, const Span< DrawingInfo > src_drawings, const FillToolFitMethod fit_method, const float2 fill_point, const bool uniform_zoom, const float max_zoom_factor, const float2 margin)
 
bke::CurvesGeometry blender::ed::greasepencil::fill_strokes (const ViewContext &view_context, const Brush &brush, const Scene &scene, const bke::greasepencil::Layer &layer, const VArray< bool > &boundary_layers, Span< DrawingInfo > src_drawings, bool invert, const std::optional< float > alpha_threshold, const float2 &fill_point, const ExtensionData &extensions, FillToolFitMethod fit_method, int stroke_material_index, bool keep_images)
 

Variables

constexpr const char * blender::ed::greasepencil::attr_material_index = "material_index"
 
constexpr const char * blender::ed::greasepencil::attr_is_boundary = "is_boundary"
 

Color Values and Flags

enum  blender::ed::greasepencil::ColorFlag {
  blender::ed::greasepencil::Border = (1 << 0) , blender::ed::greasepencil::Stroke = (1 << 1) , blender::ed::greasepencil::Fill = (1 << 2) , blender::ed::greasepencil::Seed = (1 << 3) ,
  blender::ed::greasepencil::Debug = (1 << 7)
}
 
const ColorGeometry4f blender::ed::greasepencil::draw_boundary_color = {1, 0, 0, 1}
 
const ColorGeometry4f blender::ed::greasepencil::draw_seed_color = {0, 1, 0, 1}
 

Boundary from Pixel Buffer

enum class  blender::ed::greasepencil::FillResult { blender::ed::greasepencil::Success , blender::ed::greasepencil::BorderContact }
 
enum  blender::ed::greasepencil::FillBorderMode { blender::ed::greasepencil::Cancel , blender::ed::greasepencil::Ignore }
 
constexpr const int blender::ed::greasepencil::num_directions = 8
 
static const int2 blender::ed::greasepencil::offset_by_direction [num_directions]
 
static bool blender::ed::greasepencil::get_flag (const ColorGeometry4b &color, const ColorFlag flag)
 
static void blender::ed::greasepencil::set_flag (ColorGeometry4b &color, const ColorFlag flag, bool value)
 
static void blender::ed::greasepencil::convert_colors_to_flags (ImageBufferAccessor &buffer)
 
static void blender::ed::greasepencil::convert_flags_to_colors (ImageBufferAccessor &buffer)
 
static void blender::ed::greasepencil::mark_borders (ImageBufferAccessor &buffer)
 
template<FillBorderMode border_mode>
FillResult blender::ed::greasepencil::flood_fill (ImageBufferAccessor &buffer, const int leak_filter_width=0)
 
static void blender::ed::greasepencil::invert_fill (ImageBufferAccessor &buffer)
 
static void blender::ed::greasepencil::dilate (ImageBufferAccessor &buffer, int iterations=1)
 
static void blender::ed::greasepencil::erode (ImageBufferAccessor &buffer, int iterations=1)
 
static int blender::ed::greasepencil::wrap_dir_3n (const int dir)
 
static FillBoundary blender::ed::greasepencil::build_fill_boundary (const ImageBufferAccessor &buffer, bool include_holes)
 
static bke::CurvesGeometry blender::ed::greasepencil::boundary_to_curves (const Scene &scene, const ViewContext &view_context, const Brush &brush, const FillBoundary &boundary, const ImageBufferAccessor &buffer, const ed::greasepencil::DrawingPlacement &placement, const int material_index, const float hardness)
 
static bke::CurvesGeometry blender::ed::greasepencil::process_image (Image &ima, const Scene &scene, const ViewContext &view_context, const Brush &brush, const ed::greasepencil::DrawingPlacement &placement, const int stroke_material_index, const float stroke_hardness, const bool invert, const bool output_as_colors)