""" Constants and metadata for the Text Texture Generator addon. """ # Version information VERSION_TYPE = "{{VERSION_TYPE}}" # "free" or "full" bl_info = { "name": "{{PROJECT_NAME}}" + (" Free" if VERSION_TYPE == "free" else " Full"), "author": "{{PROJECT_AUTHOR}}", "version": ({{VERSION_MAJOR}}, {{VERSION_MINOR}}, {{VERSION_PATCH}}), "blender": ({{BLENDER_VERSION_MAJOR}}, {{BLENDER_VERSION_MINOR}}, {{BLENDER_VERSION_PATCH}}), "location": "{{PROJECT_LOCATION}}", "description": "{{PROJECT_DESCRIPTION}}" + (" - Free Version (Limited Features)" if VERSION_TYPE == "free" else " - Full Version"), "category": "{{PROJECT_CATEGORY}}", } # Feature configuration based on version type ENABLED_FEATURES = ["basic", "preview"] if VERSION_TYPE == "free" else [ "basic", "preview", "presets", "normal_maps", "batch_processing", "image_overlays", "basic_utilities", "advanced_utilities", "advanced_styling", "stroke_effects", "blur_effects", "shadow_glow_effects", "shader_generation", "text_fitting" ] # Version-specific limits (applied at build time through file exclusions) def get_version_limits(): """Get version-specific limits.""" if VERSION_TYPE == "free": return { "max_concurrent_operations": {{MAX_CONCURRENT_OPERATIONS}} } else: return { "max_concurrent_operations": {{MAX_CONCURRENT_OPERATIONS}} } def is_free_version(): """Check if this is the free version.""" return VERSION_TYPE == "free" def is_full_version(): """Check if this is the full version.""" return VERSION_TYPE == "full" # UI Helper Functions for Version Display def get_version_badge_text(): """Get version badge text for UI display.""" return "FREE" if is_free_version() else "PRO" def get_version_badge_icon(): """Get appropriate icon for version badge.""" return 'GIFT' if is_free_version() else 'STAR' def get_upgrade_hint_text(feature_name): """Get contextual upgrade hint text for specific features.""" if not is_free_version(): return "" return f"Upgrade to Pro version to access {feature_name}" # Feature availability functions def has_feature(feature_name): """Check if a specific feature is available.""" return feature_name in ENABLED_FEATURES def has_image_overlays(): """Check if image overlay features are available""" return has_feature("image_overlays") def has_basic_utilities(): """Check if basic utility operations are available""" return has_feature("basic_utilities") def has_presets(): """Check if preset features are available""" return has_feature("presets") def has_normal_maps(): """Check if normal map generation is available""" return has_feature("normal_maps") def has_batch_processing(): """Check if batch processing is available""" return has_feature("batch_processing") def has_advanced_utilities(): """Check if advanced utility operations are available""" return has_feature("advanced_utilities") def has_advanced_styling(): """Check if advanced styling options are available""" return has_feature("advanced_styling") def has_stroke_effects(): """Check if stroke effects are available""" return has_feature("stroke_effects") def has_blur_effects(): """Check if blur effects are available""" return has_feature("blur_effects") def has_shadow_glow_effects(): """Check if shadow and glow effects are available""" return has_feature("shadow_glow_effects") def has_shader_generation(): """Check if shader generation is available""" return has_feature("shader_generation") def has_text_fitting(): """Check if text fitting is available""" return has_feature("text_fitting") def get_max_resolution(): """Get maximum texture resolution based on version. Returns: None if texture resolution is unrestricted, otherwise an integer limit. """ limits = get_version_limits() return limits.get("max_texture_size") def should_show_feature_lock(feature_name): """Check if feature lock indicator should be shown.""" # Map feature names to their availability functions feature_checks = { 'presets': has_presets, 'normal_maps': has_normal_maps, 'batch_processing': has_batch_processing, 'advanced_utilities': has_advanced_utilities, 'advanced_styling': has_advanced_styling, 'image_overlays': has_image_overlays, 'basic_utilities': has_basic_utilities, 'stroke_effects': has_stroke_effects, 'blur_effects': has_blur_effects, 'shadow_glow_effects': has_shadow_glow_effects, 'shader_generation': has_shader_generation, 'text_fitting': has_text_fitting } if is_full_version(): return False # For free version, show lock if feature is not available if feature_name in feature_checks: return not feature_checks[feature_name]() return True # Show lock for unknown features def get_feature_availability_text(): """Get text describing current feature availability.""" if is_free_version(): return "Free version - Basic features available" return "Pro version - All features available" def get_version_info_details(): """Get detailed version information for display.""" limits = get_version_limits() max_texture_size = limits.get('max_texture_size') if not max_texture_size: max_texture_size = 'Unlimited' info = { 'version_type': VERSION_TYPE.upper(), 'max_texture_size': max_texture_size, 'max_concurrent_operations': limits.get('max_concurrent_operations', 'Unlimited'), 'features_enabled': len(ENABLED_FEATURES), 'upgrade_available': is_free_version() } return info