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