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
TypeScript
/**
* 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;