indexing description: " Gets called by spice_editor and then decides which slides need to updated" project: "SpiceRack" class THUMBNAIL_UPDATE insert GLOBAL_ACCESS UPDATER_ACCESS creation make feature -- Creation make (a_segment: SEGMENT; a_slide: SLIDE; segment_true: BOOLEAN) is -- Recieve signal from model. Decided what slides have been changed. Retrieve information from the THUMBNAIL_INFO class. require global_service.service /= Void do crash print ("THUMBNAIL UPDATE make") if segment_true then update_segment_thumbnails (a_segment) else update_slide_thumbnail (a_slide) end end feature -- Access v_thumbnailer: SLIDE_THUMBNAILER2 feature -- Thumbnail Information video_offset: REAL is 0.5 milliseconds_or_percentage: BOOLEAN is False thumb_width: INTEGER is 300 thumb_height: INTEGER is 225 full_thumbnail_path_name (a_segment: SEGMENT; a_slide: SLIDE): PATH_NAME is require a_segment /= Void a_slide /= Void do Result := short_thumbnail_path_name / (segment_id (a_segment) + "_" + slide_id (a_slide) + "." + thumbnail_extension) ensure Result /= Void end short_thumbnail_path_name: PATH_NAME is once Result := new_path Result.make_current Result := Result / "interface" / "images" / "thumbnails" ensure Result /= Void Result.is_directory end segment_id (a_segment: SEGMENT): STRING is require a_segment /= Void do Result := once "SEG_" + a_segment.to_pointer.to_string ensure Result.is_equal (once "SEG_" + a_segment.to_pointer.to_string) end slide_id (a_slide: SLIDE): STRING is require a_slide /= Void do Result := once "SLIDE_" + a_slide.to_pointer.to_string ensure Result.is_equal (once "SLIDE_" + a_slide.to_pointer.to_string) end thumbnail_extension: STRING is "jpg" feature -- Thumbnailing update_segment_thumbnails (a_segment: SEGMENT) is -- deletes and creates thumbnail/s for one segment require a_segment /= Void local a_slide: SLIDE f_tools: FILE_TOOLS thumb_dir: DIRECTORY i: INTEGER f: STRING do crash -- Deletion create thumb_dir.scan_with (short_thumbnail_path_name.to_string) from i := thumb_dir.lower until i > thumb_dir.count loop print ("update_segment_thumbnails delete") f := (short_thumbnail_path_name / thumb_dir.item (i)).to_string if f.has_prefix (segment_id (a_segment)) then f_tools.delete (f) end end -- Creation create v_thumbnailer.for_segment (a_segment) from i := 1 until i > a_segment.count loop print ("update_segment_thumbnails create") a_slide := a_segment.item (i) v_thumbnailer.set_video_offset(video_offset, milliseconds_or_percentage) v_thumbnailer.create_thumbnail (thumb_width, thumb_height) v_thumbnailer.save_thumbnail ((full_thumbnail_path_name (a_segment, a_slide)).to_string) i := i + 1 end end update_slide_thumbnail (a_slide: SLIDE) is -- deletes and creates thumbnail for one slide require a_slide /= Void local a_segment: SEGMENT indices: ARRAY [INTEGER] f_tools: FILE_TOOLS f: STRING do crash -- Deletion a_segment := global_service.service.item (indices @ 1) f := full_thumbnail_path_name (a_segment, a_slide).to_string f_tools.delete (f) -- Creation indices := global_service.service.indices_of_row (a_slide) check indices.count = 2 end print ("update_slide_thumbnails create") create v_thumbnailer.for_segment (a_segment) v_thumbnailer.set_video_offset(video_offset, milliseconds_or_percentage) v_thumbnailer.create_thumbnail (thumb_width, thumb_height) v_thumbnailer.save_thumbnail (full_thumbnail_path_name (a_segment, a_slide).to_string) end -- udpate_all_thumbnails (a_service: SERVICE) is -- require -- a_service /= Void -- local -- a_segment: SEGMENT -- f_tools: FILE_TOOLS -- thumb_dir: DIRECTORY -- i, j: INTEGER -- f: STRING -- do -- create thumb_dir.scan_with (short_thumbnail_path_name.to_string) -- from i := thumb_dir.lower until i > thumb_dir.count loop -- f := (short_thumbnail_path_name / thumb_dir.item (i)).to_string -- if f.has_suffix (thumbnail_extension) then f_tools.delete (f) -- end -- i := i + 1 -- end -- end create_all_thumbnails (a_service: SERVICE) is local a_segment: SEGMENT a_slide: SLIDE i, j: INTEGER f: STRING do create v_thumbnailer.for_segment (a_segment) from i := 1 until i > a_service.count loop a_segment := a_service.item (i) print ("create all thumbnail segment") from j := 1 until j > a_segment.count loop print ("create all thumbnail slide") a_slide := a_segment.item (j) v_thumbnailer.set_video_offset(video_offset, milliseconds_or_percentage) v_thumbnailer.create_thumbnail (thumb_width, thumb_height) v_thumbnailer.save_thumbnail (full_thumbnail_path_name (a_segment, a_slide).to_string) j := j + 1 end i := i + 1 end end delete_all_thumbnails is local f_tools: FILE_TOOLS thumb_dir: DIRECTORY i, j: INTEGER f: STRING do create thumb_dir.scan_with (short_thumbnail_path_name.to_string) from i := thumb_dir.lower until i > thumb_dir.count loop print ("delete all thumbnail segment") f := (short_thumbnail_path_name / thumb_dir.item (i)).to_string if f.has_suffix (thumbnail_extension) then f_tools.delete (f) end i := i + 1 end end end -- class THUMBNAIL_UPDATE