UNPKG

rough-native

Version:

Create graphics using HTML Canvas or SVG with a hand-drawn, sketchy, appearance. Features comprehensive React hooks, memory management, and React 18 concurrent rendering support.

216 lines (215 loc) 8.49 kB
/** * Centralized configuration for rough-native * All magic numbers and configurable values are defined here */ export declare const MEMORY_CONFIG: { readonly HIGH_MEMORY_PRESSURE_THRESHOLD: 0.8; readonly MEDIUM_MEMORY_PRESSURE_THRESHOLD: 0.6; readonly CACHE_SIZE_HIGH_PRESSURE: 50; readonly CACHE_SIZE_MEDIUM_PRESSURE: 200; readonly CACHE_SIZE_LOW_PRESSURE: 500; readonly CACHE_SIZE_DEFAULT: 200; readonly HIGH_PRESSURE_CLEANUP_PERCENT: 0.75; readonly HIGH_PRESSURE_KEEP_PERCENT: 0.25; readonly MEDIUM_PRESSURE_CLEANUP_PERCENT: 0.5; readonly MEDIUM_PRESSURE_KEEP_PERCENT: 0.5; readonly SHAPE_CACHE_MULTIPLIER: 2; readonly MAX_CONCURRENT_GENERATIONS_UNDER_PRESSURE: 2; readonly MEMORY_CHECK_INTERVAL_MS: 5000; readonly BYTES_TO_KB: 1024; readonly KB_TO_MB: 1024; }; export declare const ERROR_CONFIG: { readonly MAX_ERROR_CACHE_SIZE: 50; readonly ERROR_RATE_LIMIT_PER_MINUTE: 10; readonly ERROR_CACHE_CLEANUP_INTERVAL_MS: 60000; readonly SAMPLE_SIZE_FOR_ARRAY_PARAMS: 3; readonly MS_PER_MINUTE: 60000; }; export declare const DRAWING_CONFIG: { readonly DEFAULT_MAX_RANDOMNESS_OFFSET: 2; readonly DEFAULT_ROUGHNESS: 1; readonly DEFAULT_BOWING: 1; readonly DEFAULT_STROKE_WIDTH: 1; readonly DEFAULT_CURVE_TIGHTNESS: 0; readonly DEFAULT_CURVE_FITTING: 0.95; readonly DEFAULT_CURVE_STEP_COUNT: 9; readonly DEFAULT_FILL_WEIGHT: -1; readonly DEFAULT_HACHURE_ANGLE: -41; readonly DEFAULT_HACHURE_GAP: -1; readonly DEFAULT_DASH_OFFSET: -1; readonly DEFAULT_DASH_GAP: -1; readonly DEFAULT_ZIGZAG_OFFSET: -1; readonly DEFAULT_SEED: 0; readonly DEFAULT_DISABLE_MULTI_STROKE: false; readonly DEFAULT_DISABLE_MULTI_STROKE_FILL: false; readonly DEFAULT_PRESERVE_VERTICES: false; readonly DEFAULT_FILL_SHAPE_ROUGHNESS_GAIN: 0.8; readonly CURVE_ROUGHNESS_MULTIPLIER: 0.2; readonly MULTI_STROKE_OFFSET_MULTIPLIER: 1.5; readonly MULTI_STROKE_ROUGHNESS_MULTIPLIER: 0.22; readonly BEZIER_CURVE_POINTS: 10; readonly SIMPLIFICATION_FACTOR: 4; }; export declare const RENDERING_CONFIG: { readonly CURVE_STEP_COUNT_BASE: 200; readonly ELLIPSE_INCREMENT_OFFSET_FACTOR: 0.1; readonly ELLIPSE_INCREMENT_OFFSET_RANGE: 0.4; readonly ELLIPSE_MULTI_STROKE_FACTOR: 1.5; readonly ARC_RADIUS_OFFSET_FACTOR: 0.01; readonly ARC_INCREMENT_DIVISOR: 2; readonly ARC_MULTI_STROKE_FACTOR: 1.5; readonly PATTERN_FILL_ARC_RADIUS_OFFSET: 0.01; readonly LINE_LENGTH_THRESHOLD_SHORT: 200; readonly LINE_LENGTH_THRESHOLD_LONG: 500; readonly ROUGHNESS_GAIN_LONG_LINES: 0.4; readonly ROUGHNESS_GAIN_COEFFICIENT: -0.0016668; readonly ROUGHNESS_GAIN_CONSTANT: 1.233334; readonly OFFSET_SQUARED_MULTIPLIER: 100; readonly OFFSET_DIVISOR_LONG_LINES: 10; readonly DIVERGE_POINT_BASE: 0.2; readonly DIVERGE_POINT_RANGE: 0.2; readonly BOWING_DISPLACEMENT_DIVISOR: 200; }; export declare const FILL_PATTERN_CONFIG: { readonly HACHURE_ANGLE_ADJUSTMENT: 90; readonly DEFAULT_HACHURE_GAP_MULTIPLIER: 4; readonly MIN_HACHURE_GAP: 0.1; readonly HACHURE_SKIP_OFFSET_THRESHOLD: 0.7; readonly CROSS_HATCH_ANGLE_INCREMENT: 90; readonly DEFAULT_ZIGZAG_GAP_MULTIPLIER: 4; readonly MIN_ZIGZAG_GAP: 0.1; readonly DEGREES_TO_RADIANS_FACTOR: 180; readonly ZIGZAG_DISPLACEMENT_FACTOR: 0.5; }; export declare const RANDOM_CONFIG: { readonly SEED_UPPER_BOUND: number; readonly LCG_MASK: number; readonly LCG_MULTIPLIER: 48271; readonly LCG_DIVISOR: number; }; export declare const REACT_HOOK_CONFIG: { readonly ID_PREFIX: "rough-"; readonly MAX_RECURSION_DEPTH: 10; readonly KEY_LOOKUP_SET_THRESHOLD: 10; readonly DEFAULT_CURVE_TIGHTNESS: 2; }; export declare const VALIDATION_CONFIG: { readonly MIN_POINT_ARRAY_LENGTH: 2; readonly MIN_POLYGON_POINTS: 3; readonly MIN_PATH_STRING_LENGTH: 0; }; export declare const getEnvironmentConfig: () => { cacheSize: 50 | 200; highMemoryThreshold: number; memoryCheckInterval: number; enableErrorLogging: boolean; errorRateLimit: number; }; export declare const CONFIG: { readonly MEMORY: { readonly HIGH_MEMORY_PRESSURE_THRESHOLD: 0.8; readonly MEDIUM_MEMORY_PRESSURE_THRESHOLD: 0.6; readonly CACHE_SIZE_HIGH_PRESSURE: 50; readonly CACHE_SIZE_MEDIUM_PRESSURE: 200; readonly CACHE_SIZE_LOW_PRESSURE: 500; readonly CACHE_SIZE_DEFAULT: 200; readonly HIGH_PRESSURE_CLEANUP_PERCENT: 0.75; readonly HIGH_PRESSURE_KEEP_PERCENT: 0.25; readonly MEDIUM_PRESSURE_CLEANUP_PERCENT: 0.5; readonly MEDIUM_PRESSURE_KEEP_PERCENT: 0.5; readonly SHAPE_CACHE_MULTIPLIER: 2; readonly MAX_CONCURRENT_GENERATIONS_UNDER_PRESSURE: 2; readonly MEMORY_CHECK_INTERVAL_MS: 5000; readonly BYTES_TO_KB: 1024; readonly KB_TO_MB: 1024; }; readonly ERROR: { readonly MAX_ERROR_CACHE_SIZE: 50; readonly ERROR_RATE_LIMIT_PER_MINUTE: 10; readonly ERROR_CACHE_CLEANUP_INTERVAL_MS: 60000; readonly SAMPLE_SIZE_FOR_ARRAY_PARAMS: 3; readonly MS_PER_MINUTE: 60000; }; readonly DRAWING: { readonly DEFAULT_MAX_RANDOMNESS_OFFSET: 2; readonly DEFAULT_ROUGHNESS: 1; readonly DEFAULT_BOWING: 1; readonly DEFAULT_STROKE_WIDTH: 1; readonly DEFAULT_CURVE_TIGHTNESS: 0; readonly DEFAULT_CURVE_FITTING: 0.95; readonly DEFAULT_CURVE_STEP_COUNT: 9; readonly DEFAULT_FILL_WEIGHT: -1; readonly DEFAULT_HACHURE_ANGLE: -41; readonly DEFAULT_HACHURE_GAP: -1; readonly DEFAULT_DASH_OFFSET: -1; readonly DEFAULT_DASH_GAP: -1; readonly DEFAULT_ZIGZAG_OFFSET: -1; readonly DEFAULT_SEED: 0; readonly DEFAULT_DISABLE_MULTI_STROKE: false; readonly DEFAULT_DISABLE_MULTI_STROKE_FILL: false; readonly DEFAULT_PRESERVE_VERTICES: false; readonly DEFAULT_FILL_SHAPE_ROUGHNESS_GAIN: 0.8; readonly CURVE_ROUGHNESS_MULTIPLIER: 0.2; readonly MULTI_STROKE_OFFSET_MULTIPLIER: 1.5; readonly MULTI_STROKE_ROUGHNESS_MULTIPLIER: 0.22; readonly BEZIER_CURVE_POINTS: 10; readonly SIMPLIFICATION_FACTOR: 4; }; readonly RENDERING: { readonly CURVE_STEP_COUNT_BASE: 200; readonly ELLIPSE_INCREMENT_OFFSET_FACTOR: 0.1; readonly ELLIPSE_INCREMENT_OFFSET_RANGE: 0.4; readonly ELLIPSE_MULTI_STROKE_FACTOR: 1.5; readonly ARC_RADIUS_OFFSET_FACTOR: 0.01; readonly ARC_INCREMENT_DIVISOR: 2; readonly ARC_MULTI_STROKE_FACTOR: 1.5; readonly PATTERN_FILL_ARC_RADIUS_OFFSET: 0.01; readonly LINE_LENGTH_THRESHOLD_SHORT: 200; readonly LINE_LENGTH_THRESHOLD_LONG: 500; readonly ROUGHNESS_GAIN_LONG_LINES: 0.4; readonly ROUGHNESS_GAIN_COEFFICIENT: -0.0016668; readonly ROUGHNESS_GAIN_CONSTANT: 1.233334; readonly OFFSET_SQUARED_MULTIPLIER: 100; readonly OFFSET_DIVISOR_LONG_LINES: 10; readonly DIVERGE_POINT_BASE: 0.2; readonly DIVERGE_POINT_RANGE: 0.2; readonly BOWING_DISPLACEMENT_DIVISOR: 200; }; readonly FILL_PATTERN: { readonly HACHURE_ANGLE_ADJUSTMENT: 90; readonly DEFAULT_HACHURE_GAP_MULTIPLIER: 4; readonly MIN_HACHURE_GAP: 0.1; readonly HACHURE_SKIP_OFFSET_THRESHOLD: 0.7; readonly CROSS_HATCH_ANGLE_INCREMENT: 90; readonly DEFAULT_ZIGZAG_GAP_MULTIPLIER: 4; readonly MIN_ZIGZAG_GAP: 0.1; readonly DEGREES_TO_RADIANS_FACTOR: 180; readonly ZIGZAG_DISPLACEMENT_FACTOR: 0.5; }; readonly RANDOM: { readonly SEED_UPPER_BOUND: number; readonly LCG_MASK: number; readonly LCG_MULTIPLIER: 48271; readonly LCG_DIVISOR: number; }; readonly REACT_HOOK: { readonly ID_PREFIX: "rough-"; readonly MAX_RECURSION_DEPTH: 10; readonly KEY_LOOKUP_SET_THRESHOLD: 10; readonly DEFAULT_CURVE_TIGHTNESS: 2; }; readonly VALIDATION: { readonly MIN_POINT_ARRAY_LENGTH: 2; readonly MIN_POLYGON_POINTS: 3; readonly MIN_PATH_STRING_LENGTH: 0; }; readonly getEnvironment: () => { cacheSize: 50 | 200; highMemoryThreshold: number; memoryCheckInterval: number; enableErrorLogging: boolean; errorRateLimit: number; }; }; export default CONFIG;