creek

The AI Image Editor of 2030
commit 805dd5c30548080f75746d60371cf06e259e844a
parent 918ec834ea27304772a8eb032dd0efa647291115
Author: ajcoder13 <avnijhalani@gmail.com>
Date:   Wed,  3 Dec 2025 02:19:40 +0530

Fixed Caption generation

Diffstat:
Mlib/ui/pages/canvas_board_page.dart | 14++++++++++++--
Mlib/ui/pages/canvas_toolbar/magic_draw_overlay.dart | 6+++---
2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/lib/ui/pages/canvas_board_page.dart b/lib/ui/pages/canvas_board_page.dart @@ -122,6 +122,7 @@ class _CanvasBoardPageState extends State<CanvasBoardPage> { // Detection Timer & AI Analysis Timer? _inactivityTimer; + DateTime _lastAnalysisTime = DateTime.now(); final GlobalKey _canvasGlobalKey = GlobalKey(); String? _aiDescription; bool _isAnalyzing = false; @@ -469,9 +470,9 @@ class _CanvasBoardPageState extends State<CanvasBoardPage> { } void _handleGestureStart() { - // Check if we need to capture a clean base image if (_isMagicDrawActive) { - if (!_isInpainting && _tempBaseImage == null) { + bool hasImageLayers = elements.any((e) => e['type'] == 'file_image'); + if (hasImageLayers && !_isInpainting && _tempBaseImage == null) { _ensureBaseImageCaptured(); } return; @@ -1407,6 +1408,15 @@ class _CanvasBoardPageState extends State<CanvasBoardPage> { DrawingPoint(offset: details.localPosition, paint: Paint()), ); }); + + // NEW: Throttle Analysis: Trigger "Describe" every 2.5s while actively drawing + if (_isMagicDrawActive && + !_isAnalyzing && + !_isInpainting && + DateTime.now().difference(_lastAnalysisTime).inMilliseconds > 2500) { + _lastAnalysisTime = DateTime.now(); + _analyzeCanvas(); + } } Future<void> _onPanEnd(DragEndDetails details) async { diff --git a/lib/ui/pages/canvas_toolbar/magic_draw_overlay.dart b/lib/ui/pages/canvas_toolbar/magic_draw_overlay.dart @@ -81,13 +81,13 @@ class _MagicDrawToolsState extends State<MagicDrawTools> { // --- 2. LIST FOR SKETCH TO IMAGE (When No Image Exists) --- final List<AIModelOption> _sketchModels = [ - AIModelOption(id: 'sketch_fusion', name: 'Slider Fusion', badge: null), + AIModelOption(id: 'sketch_fusion', name: 'Sketch Model 1', badge: null), AIModelOption( id: 'sketch_advanced', - name: 'Advanced Fusion', + name: 'Sketch Model 2', badge: 'Fastest', ), - AIModelOption(id: 'sketch_creative', name: 'Creative Flow', badge: 'New'), + AIModelOption(id: 'sketch_creative', name: 'Sketch Model 3', badge: 'New'), ]; @override