Spaces:
Sleeping
Sleeping
""" | |
Parameter management for SVG vectorization. | |
""" | |
# Default parameters for SVG conversion | |
DEFAULT_PARAMS = { | |
# Color mode settings | |
'COLORMODE': 'color', # 'color' or 'binary' | |
# Hierarchy mode settings | |
'HIERARCHICAL': 'stacked', # 'stacked' or 'cutout' | |
# Trace mode settings | |
'MODE': 'spline', # 'spline', 'polygon', or 'none' | |
# Filter settings | |
'FILTER_SPECKLE': 10, # Noise filter (0-128) | |
'COLOR_PRECISION': 6, # Color precision (1-8) | |
'LAYER_DIFFERENCE': 16, # Gradient steps (0-128) | |
# Curve fitting settings | |
'CORNER_THRESHOLD': 60, # Angle threshold (0-180) | |
'LENGTH_THRESHOLD': 4.0, # Segment length (3.5-10) | |
'MAX_ITERATIONS': 10, # Maximum iterations (1-20) | |
'SPLICE_THRESHOLD': 45, # Splice threshold (0-180) | |
'PATH_PRECISION': 9, # Path precision (1-10) | |
} | |
def update_params(base_params, new_params): | |
""" | |
Update parameters with new values. | |
Args: | |
base_params (dict): Base parameter dictionary | |
new_params (dict): New parameter values to update | |
Returns: | |
dict: Updated parameter dictionary | |
""" | |
updated_params = base_params.copy() | |
for key, value in new_params.items(): | |
if key in updated_params: | |
updated_params[key] = value | |
print(f"Parameter updated: {key} = {value}") | |
else: | |
print(f"Warning: Unknown parameter '{key}' was ignored.") | |
return updated_params | |
def print_params(params): | |
""" | |
Display current parameter settings. | |
Args: | |
params (dict): Parameter dictionary to display | |
""" | |
print("Current parameter settings:") | |
for key, value in params.items(): | |
print(f" {key}: {value}") | |
def validate_params(params): | |
""" | |
Validate parameter values. | |
Args: | |
params (dict): Parameters to validate | |
Returns: | |
tuple: (bool, str) - (is_valid, error_message) | |
""" | |
validations = { | |
'COLORMODE': lambda x: x in ['color', 'binary'], | |
'HIERARCHICAL': lambda x: x in ['stacked', 'cutout'], | |
'MODE': lambda x: x in ['spline', 'polygon', 'none'], | |
'FILTER_SPECKLE': lambda x: 0 <= x <= 128, | |
'COLOR_PRECISION': lambda x: 1 <= x <= 8, | |
'LAYER_DIFFERENCE': lambda x: 0 <= x <= 128, | |
'CORNER_THRESHOLD': lambda x: 0 <= x <= 180, | |
'LENGTH_THRESHOLD': lambda x: 3.5 <= x <= 10, | |
'MAX_ITERATIONS': lambda x: 1 <= x <= 20, | |
'SPLICE_THRESHOLD': lambda x: 0 <= x <= 180, | |
'PATH_PRECISION': lambda x: 1 <= x <= 10 | |
} | |
for key, validator in validations.items(): | |
if key not in params: | |
return False, f"Missing parameter: {key}" | |
if not validator(params[key]): | |
return False, f"Invalid value for {key}: {params[key]}" | |
return True, "Parameters are valid" | |