powerpoint-pro 2.1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.codeclimate.yml +9 -0
- data/.gitignore +19 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +83 -0
- data/Rakefile +7 -0
- data/lib/powerpoint/compression.rb +25 -0
- data/lib/powerpoint/presentation.rb +118 -0
- data/lib/powerpoint/slide/collage.rb +47 -0
- data/lib/powerpoint/slide/comment.rb +39 -0
- data/lib/powerpoint/slide/concept.rb +48 -0
- data/lib/powerpoint/slide/custom.rb +50 -0
- data/lib/powerpoint/slide/dashboard.rb +45 -0
- data/lib/powerpoint/slide/dashboard_user.rb +40 -0
- data/lib/powerpoint/slide/extended_intro.rb +38 -0
- data/lib/powerpoint/slide/gallery.rb +42 -0
- data/lib/powerpoint/slide/intro.rb +36 -0
- data/lib/powerpoint/slide/multiple_image.rb +42 -0
- data/lib/powerpoint/slide/pictorial.rb +54 -0
- data/lib/powerpoint/slide/picture_description.rb +63 -0
- data/lib/powerpoint/slide/text_picture_split.rb +56 -0
- data/lib/powerpoint/slide/textual.rb +32 -0
- data/lib/powerpoint/util.rb +39 -0
- data/lib/powerpoint/version.rb +3 -0
- data/lib/powerpoint/views/app.xml.erb +51 -0
- data/lib/powerpoint/views/collage.xml.erb +211 -0
- data/lib/powerpoint/views/collage_rel.xml.erb +9 -0
- data/lib/powerpoint/views/comment.xml.erb +257 -0
- data/lib/powerpoint/views/comment_rel.xml.erb +6 -0
- data/lib/powerpoint/views/concept.xml.erb +271 -0
- data/lib/powerpoint/views/concept_rel.xml.erb +9 -0
- data/lib/powerpoint/views/content_type.xml.erb +31 -0
- data/lib/powerpoint/views/custom.xml.erb +174 -0
- data/lib/powerpoint/views/custom_rel.xml.erb +9 -0
- data/lib/powerpoint/views/dashboard.xml.erb +976 -0
- data/lib/powerpoint/views/dashboard_rel.xml.erb +9 -0
- data/lib/powerpoint/views/dashboard_user.xml.erb +221 -0
- data/lib/powerpoint/views/dashboard_user_rel.xml.erb +8 -0
- data/lib/powerpoint/views/extended_intro_slide.xml.erb +225 -0
- data/lib/powerpoint/views/extended_intro_slide_rel.xml.erb +3 -0
- data/lib/powerpoint/views/gallery.xml.erb +340 -0
- data/lib/powerpoint/views/gallery_rel.xml.erb +9 -0
- data/lib/powerpoint/views/intro_slide.xml.erb +74 -0
- data/lib/powerpoint/views/multiple_image.xml.erb +319 -0
- data/lib/powerpoint/views/multiple_image_rel.xml.erb +9 -0
- data/lib/powerpoint/views/pictorial_rel.xml.erb +5 -0
- data/lib/powerpoint/views/pictorial_slide.xml.erb +87 -0
- data/lib/powerpoint/views/picture_description_rels.xml.erb +5 -0
- data/lib/powerpoint/views/picture_description_slide.xml.erb +115 -0
- data/lib/powerpoint/views/presentation.xml.erb +124 -0
- data/lib/powerpoint/views/presentation.xml.rel.erb +11 -0
- data/lib/powerpoint/views/text_picture_split_rel.xml.erb +5 -0
- data/lib/powerpoint/views/text_picture_split_slide.xml.erb +114 -0
- data/lib/powerpoint/views/textual_rel.xml.erb +4 -0
- data/lib/powerpoint/views/textual_slide.xml.erb +78 -0
- data/lib/powerpoint.rb +25 -0
- data/powerpoint.gemspec +31 -0
- data/samples/images/sample_gif.gif +0 -0
- data/samples/images/sample_jpg.jpg +0 -0
- data/samples/images/sample_png.png +0 -0
- data/samples/pptx/sample.pptx +0 -0
- data/spec/extended_test_spec.rb +13 -0
- data/spec/ranking_spec.rb +13 -0
- data/spec/test_spec.rb +22 -0
- data/template/_rels/.rels +6 -0
- data/template/docProps/core.xml +7 -0
- data/template/ppt/_rels/.keep +0 -0
- data/template/ppt/media/.keep +0 -0
- data/template/ppt/presProps.xml +14 -0
- data/template/ppt/slideLayouts/_rels/slideLayout1.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout10.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout11.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout2.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout3.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout4.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout5.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout6.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout7.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout8.xml.rels +2 -0
- data/template/ppt/slideLayouts/_rels/slideLayout9.xml.rels +2 -0
- data/template/ppt/slideLayouts/slideLayout1.xml +242 -0
- data/template/ppt/slideLayouts/slideLayout10.xml +2 -0
- data/template/ppt/slideLayouts/slideLayout11.xml +2 -0
- data/template/ppt/slideLayouts/slideLayout2.xml +165 -0
- data/template/ppt/slideLayouts/slideLayout3.xml +2 -0
- data/template/ppt/slideLayouts/slideLayout4.xml +2 -0
- data/template/ppt/slideLayouts/slideLayout5.xml +2 -0
- data/template/ppt/slideLayouts/slideLayout6.xml +2 -0
- data/template/ppt/slideLayouts/slideLayout7.xml +2 -0
- data/template/ppt/slideLayouts/slideLayout8.xml +2 -0
- data/template/ppt/slideLayouts/slideLayout9.xml +2 -0
- data/template/ppt/slideMasters/_rels/slideMaster1.xml.rels +2 -0
- data/template/ppt/slideMasters/_rels/slideMaster2.xml.rels +2 -0
- data/template/ppt/slideMasters/slideMaster1.xml +487 -0
- data/template/ppt/slideMasters/slideMaster2.xml +487 -0
- data/template/ppt/slides/_rels/.keep +0 -0
- data/template/ppt/tableStyles.xml +2 -0
- data/template/ppt/theme/theme1.xml +2 -0
- data/template/ppt/theme/theme2.xml +281 -0
- data/template/ppt/viewProps.xml +32 -0
- metadata +232 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
module Powerpoint
|
5
|
+
module Slide
|
6
|
+
class Intro
|
7
|
+
include Powerpoint::Util
|
8
|
+
|
9
|
+
attr_reader :title, :subtitile
|
10
|
+
|
11
|
+
def initialize(options={})
|
12
|
+
require_arguments [:title, :subtitile], options
|
13
|
+
options.each {|k, v| instance_variable_set("@#{k}", v)}
|
14
|
+
end
|
15
|
+
|
16
|
+
def save(extract_path, index)
|
17
|
+
save_rel_xml(extract_path, index)
|
18
|
+
save_slide_xml(extract_path, index)
|
19
|
+
end
|
20
|
+
|
21
|
+
def file_type
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def save_rel_xml(extract_path, index)
|
26
|
+
render_view('textual_rel.xml.erb', "#{extract_path}/ppt/slides/_rels/slide#{index}.xml.rels", index: index)
|
27
|
+
end
|
28
|
+
private :save_rel_xml
|
29
|
+
|
30
|
+
def save_slide_xml(extract_path, index)
|
31
|
+
render_view('intro_slide.xml.erb', "#{extract_path}/ppt/slides/slide#{index}.xml")
|
32
|
+
end
|
33
|
+
private :save_slide_xml
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'zip/filesystem'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'fastimage'
|
4
|
+
require 'erb'
|
5
|
+
|
6
|
+
module Powerpoint
|
7
|
+
module Slide
|
8
|
+
class MultipleImage
|
9
|
+
include Powerpoint::Util
|
10
|
+
|
11
|
+
attr_reader :title, :subtitle, :page_number, :logo, :task_icon, :images
|
12
|
+
|
13
|
+
def initialize(options={})
|
14
|
+
require_arguments [:title, :subtitle, :page_number, :logo, :task_icon, :images], options
|
15
|
+
options.each {|k, v| instance_variable_set("@#{k}", v)}
|
16
|
+
@images = images
|
17
|
+
end
|
18
|
+
|
19
|
+
def save(extract_path, index)
|
20
|
+
@images.each do |image|
|
21
|
+
copy_media(extract_path, image[0])
|
22
|
+
end
|
23
|
+
|
24
|
+
copy_media(extract_path, logo)
|
25
|
+
copy_media(extract_path, task_icon)
|
26
|
+
|
27
|
+
save_rel_xml(extract_path, index)
|
28
|
+
save_slide_xml(extract_path, index)
|
29
|
+
end
|
30
|
+
|
31
|
+
def save_rel_xml(extract_path, index)
|
32
|
+
render_view('multiple_image_rel.xml.erb', "#{extract_path}/ppt/slides/_rels/slide#{index}.xml.rels", index: index)
|
33
|
+
end
|
34
|
+
private :save_rel_xml
|
35
|
+
|
36
|
+
def save_slide_xml(extract_path, index)
|
37
|
+
render_view('multiple_image.xml.erb', "#{extract_path}/ppt/slides/slide#{index}.xml")
|
38
|
+
end
|
39
|
+
private :save_slide_xml
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'zip/filesystem'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'fastimage'
|
4
|
+
require 'erb'
|
5
|
+
|
6
|
+
module Powerpoint
|
7
|
+
module Slide
|
8
|
+
class Pictorial
|
9
|
+
include Powerpoint::Util
|
10
|
+
|
11
|
+
attr_reader :image_name, :title, :coords, :image_path
|
12
|
+
|
13
|
+
def initialize(options={})
|
14
|
+
require_arguments [:presentation, :title, :image_path], options
|
15
|
+
options.each {|k, v| instance_variable_set("@#{k}", v)}
|
16
|
+
@coords = default_coords unless @coords.any?
|
17
|
+
@image_name = File.basename(@image_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
def save(extract_path, index)
|
21
|
+
copy_media(extract_path, @image_path)
|
22
|
+
save_rel_xml(extract_path, index)
|
23
|
+
save_slide_xml(extract_path, index)
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_type
|
27
|
+
File.extname(image_name).gsub('.', '')
|
28
|
+
end
|
29
|
+
|
30
|
+
def default_coords
|
31
|
+
slide_width = pixle_to_pt(720)
|
32
|
+
default_width = pixle_to_pt(550)
|
33
|
+
|
34
|
+
return {} unless dimensions = FastImage.size(image_path)
|
35
|
+
image_width, image_height = dimensions.map {|d| pixle_to_pt(d)}
|
36
|
+
new_width = default_width < image_width ? default_width : image_width
|
37
|
+
ratio = new_width / image_width.to_f
|
38
|
+
new_height = (image_height.to_f * ratio).round
|
39
|
+
{x: (slide_width / 2) - (new_width/2), y: pixle_to_pt(120), cx: new_width, cy: new_height}
|
40
|
+
end
|
41
|
+
private :default_coords
|
42
|
+
|
43
|
+
def save_rel_xml(extract_path, index)
|
44
|
+
render_view('pictorial_rel.xml.erb', "#{extract_path}/ppt/slides/_rels/slide#{index}.xml.rels", index: index)
|
45
|
+
end
|
46
|
+
private :save_rel_xml
|
47
|
+
|
48
|
+
def save_slide_xml(extract_path, index)
|
49
|
+
render_view('pictorial_slide.xml.erb', "#{extract_path}/ppt/slides/slide#{index}.xml")
|
50
|
+
end
|
51
|
+
private :save_slide_xml
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'zip/filesystem'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'fastimage'
|
4
|
+
require 'erb'
|
5
|
+
|
6
|
+
module Powerpoint
|
7
|
+
module Slide
|
8
|
+
class DescriptionPic
|
9
|
+
include Powerpoint::Util
|
10
|
+
|
11
|
+
attr_reader :title, :content, :image_name, :image_path, :coords
|
12
|
+
|
13
|
+
def initialize(options={})
|
14
|
+
require_arguments [:presentation, :title, :image_path, :content], options
|
15
|
+
options.each {|k, v| instance_variable_set("@#{k}", v)}
|
16
|
+
@coords = default_coords
|
17
|
+
@image_name = File.basename(@image_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
def save(extract_path, index)
|
21
|
+
copy_media(extract_path, @image_path)
|
22
|
+
save_rel_xml(extract_path, index)
|
23
|
+
save_slide_xml(extract_path, index)
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_type
|
27
|
+
File.extname(image_name).gsub('.', '')
|
28
|
+
end
|
29
|
+
|
30
|
+
def default_coords
|
31
|
+
slide_width = pixle_to_pt(720)
|
32
|
+
default_width = pixle_to_pt(550)
|
33
|
+
default_height = pixle_to_pt(300)
|
34
|
+
|
35
|
+
return {} unless dimensions = FastImage.size(image_path)
|
36
|
+
image_width, image_height = dimensions.map {|d| pixle_to_pt(d)}
|
37
|
+
|
38
|
+
capped_width = [default_width, image_width].min
|
39
|
+
w_ratio = capped_width / image_width.to_f
|
40
|
+
|
41
|
+
capped_height = [default_height, image_height].min
|
42
|
+
h_ratio = capped_height / image_height.to_f
|
43
|
+
|
44
|
+
ratio = [w_ratio, h_ratio].min
|
45
|
+
|
46
|
+
new_width = (image_width.to_f * ratio).round
|
47
|
+
new_height = (image_height.to_f * ratio).round
|
48
|
+
{x: (slide_width / 2) - (new_width/2), y: pixle_to_pt(60), cx: new_width, cy: new_height}
|
49
|
+
end
|
50
|
+
private :default_coords
|
51
|
+
|
52
|
+
def save_rel_xml(extract_path, index)
|
53
|
+
render_view('picture_description_rels.xml.erb', "#{extract_path}/ppt/slides/_rels/slide#{index}.xml.rels", index: index)
|
54
|
+
end
|
55
|
+
private :save_rel_xml
|
56
|
+
|
57
|
+
def save_slide_xml(extract_path, index)
|
58
|
+
render_view('picture_description_slide.xml.erb', "#{extract_path}/ppt/slides/slide#{index}.xml")
|
59
|
+
end
|
60
|
+
private :save_slide_xml
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'zip/filesystem'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'fastimage'
|
4
|
+
require 'erb'
|
5
|
+
|
6
|
+
module Powerpoint
|
7
|
+
module Slide
|
8
|
+
class TextPicSplit
|
9
|
+
include Powerpoint::Util
|
10
|
+
|
11
|
+
attr_reader :title, :content, :image_name, :image_path, :coords
|
12
|
+
|
13
|
+
def initialize(options={})
|
14
|
+
require_arguments [:presentation, :title, :image_path, :content], options
|
15
|
+
options.each {|k, v| instance_variable_set("@#{k}", v)}
|
16
|
+
@coords = default_coords
|
17
|
+
@image_name = File.basename(@image_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
def save(extract_path, index)
|
21
|
+
copy_media(extract_path, @image_path)
|
22
|
+
save_rel_xml(extract_path, index)
|
23
|
+
save_slide_xml(extract_path, index)
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_type
|
27
|
+
File.extname(image_name).gsub('.', '')
|
28
|
+
end
|
29
|
+
|
30
|
+
def default_coords
|
31
|
+
start_x = pixle_to_pt(360)
|
32
|
+
default_width = pixle_to_pt(300)
|
33
|
+
|
34
|
+
return {} unless dimensions = FastImage.size(image_path)
|
35
|
+
image_width, image_height = dimensions.map {|d| pixle_to_pt(d)}
|
36
|
+
new_width = default_width < image_width ? default_width : image_width
|
37
|
+
ratio = new_width / image_width.to_f
|
38
|
+
new_height = (image_height.to_f * ratio).round
|
39
|
+
{x: start_x, y: pixle_to_pt(120), cx: new_width, cy: new_height}
|
40
|
+
end
|
41
|
+
private :default_coords
|
42
|
+
|
43
|
+
def save_rel_xml(extract_path, index)
|
44
|
+
render_view('text_picture_split_rel.xml.erb', "#{extract_path}/ppt/slides/_rels/slide#{index}.xml.rels", index: index)
|
45
|
+
end
|
46
|
+
private :save_rel_xml
|
47
|
+
|
48
|
+
def save_slide_xml(extract_path, index)
|
49
|
+
render_view('text_picture_split_slide.xml.erb', "#{extract_path}/ppt/slides/slide#{index}.xml")
|
50
|
+
end
|
51
|
+
private :save_slide_xml
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
module Powerpoint
|
5
|
+
module Slide
|
6
|
+
class Textual
|
7
|
+
include Powerpoint::Util
|
8
|
+
|
9
|
+
attr_reader :title, :content
|
10
|
+
|
11
|
+
def initialize(options={})
|
12
|
+
require_arguments [:title, :content], options
|
13
|
+
options.each {|k, v| instance_variable_set("@#{k}", v)}
|
14
|
+
end
|
15
|
+
|
16
|
+
def save(extract_path, index)
|
17
|
+
save_rel_xml(extract_path, index)
|
18
|
+
save_slide_xml(extract_path, index)
|
19
|
+
end
|
20
|
+
|
21
|
+
def save_rel_xml(extract_path, index)
|
22
|
+
render_view('textual_rel.xml.erb', "#{extract_path}/ppt/slides/_rels/slide#{index}.xml.rels", index: index)
|
23
|
+
end
|
24
|
+
private :save_rel_xml
|
25
|
+
|
26
|
+
def save_slide_xml(extract_path, index)
|
27
|
+
render_view('textual_slide.xml.erb', "#{extract_path}/ppt/slides/slide#{index}.xml")
|
28
|
+
end
|
29
|
+
private :save_slide_xml
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Powerpoint
|
2
|
+
module Util
|
3
|
+
|
4
|
+
def pixle_to_pt(px)
|
5
|
+
px * 12700
|
6
|
+
end
|
7
|
+
|
8
|
+
def render_view(template_name, path, variables = {})
|
9
|
+
view_contents = read_template(template_name)
|
10
|
+
renderer = ERB.new(view_contents)
|
11
|
+
b = merge_variables(binding, variables)
|
12
|
+
data = renderer.result(b)
|
13
|
+
|
14
|
+
File.open(path, 'w') { |f| f << data.squish!.gsub('> <', '><') }
|
15
|
+
end
|
16
|
+
|
17
|
+
def read_template(filename)
|
18
|
+
File.read("#{Powerpoint::VIEW_PATH}/#{filename}")
|
19
|
+
end
|
20
|
+
|
21
|
+
def require_arguments(required_arguements, arguements)
|
22
|
+
raise ArgumentError unless required_arguements.all? {|required_key| arguements.keys.include? required_key}
|
23
|
+
end
|
24
|
+
|
25
|
+
def copy_media(extract_path, image_path)
|
26
|
+
image_name = File.basename(image_path)
|
27
|
+
dest_path = "#{extract_path}/ppt/media/#{image_name}"
|
28
|
+
FileUtils.copy_file(image_path, dest_path) unless File.exist?(dest_path)
|
29
|
+
end
|
30
|
+
|
31
|
+
def merge_variables(b, variables)
|
32
|
+
return b if variables.empty?
|
33
|
+
variables.each do |k,v|
|
34
|
+
b.local_variable_set(k, v)
|
35
|
+
end
|
36
|
+
b
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
2
|
+
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
|
3
|
+
xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
|
4
|
+
<TotalTime>0</TotalTime>
|
5
|
+
<Words>43</Words>
|
6
|
+
<Application>Microsoft Macintosh PowerPoint</Application>
|
7
|
+
<PresentationFormat>On-screen Show (4:3)</PresentationFormat>
|
8
|
+
<Paragraphs>15</Paragraphs>
|
9
|
+
<Slides><%= slides.length %></Slides>
|
10
|
+
<Notes>0</Notes>
|
11
|
+
<HiddenSlides>0</HiddenSlides>
|
12
|
+
<MMClips>0</MMClips>
|
13
|
+
<ScaleCrop>false</ScaleCrop>
|
14
|
+
<HeadingPairs>
|
15
|
+
<vt:vector size="6" baseType="variant">
|
16
|
+
<vt:variant>
|
17
|
+
<vt:lpstr>Fonts Used</vt:lpstr>
|
18
|
+
</vt:variant>
|
19
|
+
<vt:variant>
|
20
|
+
<vt:i4>2</vt:i4>
|
21
|
+
</vt:variant>
|
22
|
+
<vt:variant>
|
23
|
+
<vt:lpstr>Theme</vt:lpstr>
|
24
|
+
</vt:variant>
|
25
|
+
<vt:variant>
|
26
|
+
<vt:i4>1</vt:i4>
|
27
|
+
</vt:variant>
|
28
|
+
<vt:variant>
|
29
|
+
<vt:lpstr>Slide Titles</vt:lpstr>
|
30
|
+
</vt:variant>
|
31
|
+
<vt:variant>
|
32
|
+
<vt:i4><%= slides.length %></vt:i4>
|
33
|
+
</vt:variant>
|
34
|
+
</vt:vector>
|
35
|
+
</HeadingPairs>
|
36
|
+
<TitlesOfParts>
|
37
|
+
<vt:vector size="<%= slides.length + 3 %>" baseType="lpstr">
|
38
|
+
<vt:lpstr>Arial</vt:lpstr>
|
39
|
+
<vt:lpstr>Calibri</vt:lpstr>
|
40
|
+
<vt:lpstr>Office Theme</vt:lpstr>
|
41
|
+
<% slides.each do |slide| %>
|
42
|
+
<vt:lpstr><%= slide.title %></vt:lpstr>
|
43
|
+
<% end %>
|
44
|
+
</vt:vector>
|
45
|
+
</TitlesOfParts>
|
46
|
+
<Company></Company>
|
47
|
+
<LinksUpToDate>false</LinksUpToDate>
|
48
|
+
<SharedDoc>false</SharedDoc>
|
49
|
+
<HyperlinksChanged>false</HyperlinksChanged>
|
50
|
+
<AppVersion>15.0000</AppVersion>
|
51
|
+
</Properties>
|
@@ -0,0 +1,211 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
2
|
+
<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
|
3
|
+
<p:cSld>
|
4
|
+
<p:spTree>
|
5
|
+
<p:nvGrpSpPr>
|
6
|
+
<p:cNvPr id="1" name=""/>
|
7
|
+
<p:cNvGrpSpPr/>
|
8
|
+
<p:nvPr/>
|
9
|
+
</p:nvGrpSpPr>
|
10
|
+
<p:grpSpPr>
|
11
|
+
<a:xfrm>
|
12
|
+
<a:off x="0" y="0"/>
|
13
|
+
<a:ext cx="0" cy="0"/>
|
14
|
+
<a:chOff x="0" y="0"/>
|
15
|
+
<a:chExt cx="0" cy="0"/>
|
16
|
+
</a:xfrm>
|
17
|
+
</p:grpSpPr>
|
18
|
+
<p:sp>
|
19
|
+
<p:nvSpPr>
|
20
|
+
<p:cNvPr id="2" name="Title"/>
|
21
|
+
<p:cNvSpPr>
|
22
|
+
<a:spLocks noGrp="1"/>
|
23
|
+
</p:cNvSpPr>
|
24
|
+
<p:nvPr />
|
25
|
+
</p:nvSpPr>
|
26
|
+
<p:spPr>
|
27
|
+
<a:xfrm>
|
28
|
+
<a:off x="1038200" y="518200"/>
|
29
|
+
<a:ext cx="10515600" cy="325563"/>
|
30
|
+
</a:xfrm>
|
31
|
+
</p:spPr>
|
32
|
+
<p:txBody>
|
33
|
+
<a:bodyPr/>
|
34
|
+
<a:lstStyle/>
|
35
|
+
<a:p>
|
36
|
+
<a:pPr algn="l"/>
|
37
|
+
<a:r>
|
38
|
+
<a:rPr lang="en-US" b="1" dirty="0" sz="2800" >
|
39
|
+
<a:solidFill>
|
40
|
+
<a:schemeClr val="dk2" />
|
41
|
+
</a:solidFill>
|
42
|
+
<a:latin typeface="Arvo" panose="02000000000000000000" pitchFamily="2" charset="77"/>
|
43
|
+
</a:rPr>
|
44
|
+
<a:t><%= title %></a:t>
|
45
|
+
</a:r>
|
46
|
+
</a:p>
|
47
|
+
</p:txBody>
|
48
|
+
</p:sp>
|
49
|
+
<p:sp>
|
50
|
+
<p:nvSpPr>
|
51
|
+
<p:cNvPr id="3" name="subtitle"/>
|
52
|
+
<p:cNvSpPr>
|
53
|
+
<a:spLocks noGrp="1"/>
|
54
|
+
</p:cNvSpPr>
|
55
|
+
<p:nvPr />
|
56
|
+
</p:nvSpPr>
|
57
|
+
<p:spPr>
|
58
|
+
<a:xfrm>
|
59
|
+
<a:off x="221510" y="145000"/>
|
60
|
+
<a:ext cx="10515600" cy="125563"/>
|
61
|
+
</a:xfrm>
|
62
|
+
</p:spPr>
|
63
|
+
<p:txBody>
|
64
|
+
<a:bodyPr/>
|
65
|
+
<a:lstStyle/>
|
66
|
+
<a:p>
|
67
|
+
<a:pPr algn="l"/>
|
68
|
+
<a:r>
|
69
|
+
<a:rPr lang="en-US" b="1" dirty="0" sz="800" >
|
70
|
+
<a:solidFill>
|
71
|
+
<a:schemeClr val="dk2" />
|
72
|
+
</a:solidFill>
|
73
|
+
</a:rPr>
|
74
|
+
<a:t><%= subtitle %></a:t>
|
75
|
+
</a:r>
|
76
|
+
</a:p>
|
77
|
+
</p:txBody>
|
78
|
+
</p:sp>
|
79
|
+
<p:sp>
|
80
|
+
<p:nvSpPr>
|
81
|
+
<p:cNvPr id="3" name="Page number"/>
|
82
|
+
<p:cNvSpPr>
|
83
|
+
<a:spLocks noGrp="1"/>
|
84
|
+
</p:cNvSpPr>
|
85
|
+
<p:nvPr />
|
86
|
+
</p:nvSpPr>
|
87
|
+
<p:spPr>
|
88
|
+
<a:xfrm>
|
89
|
+
<a:off x="8631800" y="152400"/>
|
90
|
+
<a:ext cx="105000" cy="325563"/>
|
91
|
+
</a:xfrm>
|
92
|
+
</p:spPr>
|
93
|
+
<p:txBody>
|
94
|
+
<a:bodyPr/>
|
95
|
+
<a:lstStyle/>
|
96
|
+
<a:p>
|
97
|
+
<a:pPr algn="r"/>
|
98
|
+
<a:r>
|
99
|
+
<a:rPr lang="en-US" b="1" dirty="0" sz="800" >
|
100
|
+
<a:solidFill>
|
101
|
+
<a:schemeClr val="dk2" />
|
102
|
+
</a:solidFill>
|
103
|
+
</a:rPr>
|
104
|
+
<a:t><%= page_number %></a:t>
|
105
|
+
</a:r>
|
106
|
+
</a:p>
|
107
|
+
</p:txBody>
|
108
|
+
</p:sp>
|
109
|
+
<p:pic>
|
110
|
+
<p:nvPicPr>
|
111
|
+
<p:cNvPr id="6" name="Task icon"/>
|
112
|
+
<p:cNvPicPr>
|
113
|
+
<a:picLocks noChangeAspect="1" noGrp="1"/>
|
114
|
+
</p:cNvPicPr>
|
115
|
+
<p:nvPr>
|
116
|
+
<p:ph idx="1"/>
|
117
|
+
</p:nvPr>
|
118
|
+
</p:nvPicPr>
|
119
|
+
<p:blipFill>
|
120
|
+
<a:blip r:embed="rId2">
|
121
|
+
<a:extLst>
|
122
|
+
<a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
|
123
|
+
<a14:useLocalDpi val="0" xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main"/>
|
124
|
+
</a:ext>
|
125
|
+
</a:extLst>
|
126
|
+
</a:blip>
|
127
|
+
<a:stretch>
|
128
|
+
<a:fillRect/>
|
129
|
+
</a:stretch>
|
130
|
+
</p:blipFill>
|
131
|
+
<p:spPr>
|
132
|
+
<a:xfrm>
|
133
|
+
<a:off x="231510" y="458200"/>
|
134
|
+
<a:ext cx="625563" cy="625563"/>
|
135
|
+
</a:xfrm>
|
136
|
+
</p:spPr>
|
137
|
+
</p:pic>
|
138
|
+
<p:pic>
|
139
|
+
<p:nvPicPr>
|
140
|
+
<p:cNvPr id="6" name="Butterfly logo small"/>
|
141
|
+
<p:cNvPicPr>
|
142
|
+
<a:picLocks noChangeAspect="1" noGrp="1"/>
|
143
|
+
</p:cNvPicPr>
|
144
|
+
<p:nvPr>
|
145
|
+
<p:ph idx="1"/>
|
146
|
+
</p:nvPr>
|
147
|
+
</p:nvPicPr>
|
148
|
+
<p:blipFill>
|
149
|
+
<a:blip r:embed="rId3">
|
150
|
+
<a:extLst>
|
151
|
+
<a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
|
152
|
+
<a14:useLocalDpi val="0" xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main"/>
|
153
|
+
</a:ext>
|
154
|
+
</a:extLst>
|
155
|
+
</a:blip>
|
156
|
+
<a:stretch>
|
157
|
+
<a:fillRect/>
|
158
|
+
</a:stretch>
|
159
|
+
</p:blipFill>
|
160
|
+
<p:spPr>
|
161
|
+
<a:xfrm>
|
162
|
+
<a:off x="11334927" y="145000"/>
|
163
|
+
<a:ext cx="625563" cy="221032"/>
|
164
|
+
</a:xfrm>
|
165
|
+
</p:spPr>
|
166
|
+
</p:pic>
|
167
|
+
<% images.each_with_index do |image, index| %>
|
168
|
+
<p:pic>
|
169
|
+
<p:nvPicPr>
|
170
|
+
<p:cNvPr id="<%= index + 6 %>" name="Content Placeholder <%= index + 4 %>">
|
171
|
+
<a:extLst>
|
172
|
+
<a:ext uri="{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}">
|
173
|
+
<a16:creationId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" id="{A9A20F6E-12DB-C244-80E1-C21BB706AF8B}"/>
|
174
|
+
</a:ext>
|
175
|
+
</a:extLst>
|
176
|
+
</p:cNvPr>
|
177
|
+
<p:cNvPicPr>
|
178
|
+
<a:picLocks noChangeAspect="1"/>
|
179
|
+
</p:cNvPicPr>
|
180
|
+
<p:nvPr/>
|
181
|
+
</p:nvPicPr>
|
182
|
+
<p:blipFill>
|
183
|
+
<a:blip r:embed="rId<%= index + 4 %>" />
|
184
|
+
<a:stretch>
|
185
|
+
<a:fillRect/>
|
186
|
+
</a:stretch>
|
187
|
+
</p:blipFill>
|
188
|
+
<p:spPr>
|
189
|
+
<a:xfrm>
|
190
|
+
<a:off y ="<%= @image_y_offset %>" x="<%= @image_x_offset %>" />
|
191
|
+
<a:ext cy="<%= @image_y_scale %>" cx="<%= @image_x_scale %>" />
|
192
|
+
</a:xfrm>
|
193
|
+
<a:prstGeom prst="rect">
|
194
|
+
<a:avLst/>
|
195
|
+
</a:prstGeom>
|
196
|
+
</p:spPr>
|
197
|
+
</p:pic>
|
198
|
+
|
199
|
+
<% end %>
|
200
|
+
|
201
|
+
</p:spTree>
|
202
|
+
<p:extLst>
|
203
|
+
<p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}">
|
204
|
+
<p14:creationId val="1474098577" xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main"/>
|
205
|
+
</p:ext>
|
206
|
+
</p:extLst>
|
207
|
+
</p:cSld>
|
208
|
+
<p:clrMapOvr>
|
209
|
+
<a:masterClrMapping/>
|
210
|
+
</p:clrMapOvr>
|
211
|
+
</p:sld>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
2
|
+
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
3
|
+
<Relationship Id="rId1" Target="../slideLayouts/slideLayout<%= index % 10 +1 %>.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"/>
|
4
|
+
<Relationship Id="rId2" Target="../media/<%= URI.parse(logo.gsub(" ","")).path.split("/").last %>" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"/>
|
5
|
+
<Relationship Id="rId3" Target="../media/<%= URI.parse(task_icon.gsub(" ","")).path.split("/").last %>" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"/>
|
6
|
+
<% images.each_with_index do |image, index| %>
|
7
|
+
<Relationship Id="rId<%= 4 + index %>" Target="../media/<%= URI.parse(image.gsub(" ","")).path.split("/").last %>" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"/>
|
8
|
+
<% end %>
|
9
|
+
</Relationships>
|