powerpoint 1.7 → 1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YTIyN2VhNDU0N2I4MTFkZTQxNTBmNzhiZTQ5OTYxMzA1NWFmOTgxNg==
5
- data.tar.gz: !binary |-
6
- MGNjNGJmODJlNzI2YTFiYzEyMzVlZGYxZTJhMDVmMTAyY2M5NWY0MQ==
2
+ SHA1:
3
+ metadata.gz: 7a80c6b2960438a7bfd273568aee8700938e7fa0
4
+ data.tar.gz: 4f93cf34deaed1102e592d65913442fbeef606f4
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MWYxMmE0ODg5Y2E1ZWU3MjZiYzhjYzkyYmUxOTlhNGRiZmU1NWM5M2JhZmI1
10
- YzUxZjBmZDE0YTVhYTMxNjE1OGZlNjg0OGQ1ODhjZTlmM2EzMDk3N2U3MTYz
11
- NGY2OGE0ZjRiMjYwNzI1N2EyNzI4NDNkNzA5NTliYjg1MThhYTA=
12
- data.tar.gz: !binary |-
13
- MWJkZDI5OTdiYzc5YTBmYmQ4ZTM3NjhiZmJjODk2ODUxNzMwY2E5YTg5YmZi
14
- MzlkMjY4ZWZlMmIzNDk0MTAzYTZiYWU1NTUyZmI4YzA4NjViNGMwMWU0MzYw
15
- OGNkOThjNmY5OGJhNGUzODRjOTQ0OWVkZjY5ODI4ZDJmMmVmYjE=
6
+ metadata.gz: b755db84b862f3f3e8a1fa80ed0d76cbaea664c6b6cdda879ba39060b485c31463642854b5c19f64a4603a1e87babde2cbe7bd9b61025ad99653ceccf4bc897d
7
+ data.tar.gz: e930379e6409787cf768f3011456e60a8eb9382176fa985e04e7f43d0ace1d495a431f080f654dc54ddf8b37ee97c43a52489306e04348290f4488df580896ac
@@ -3,6 +3,8 @@ require 'powerpoint/util'
3
3
  require 'powerpoint/slide/intro'
4
4
  require 'powerpoint/slide/textual'
5
5
  require 'powerpoint/slide/pictorial'
6
+ require 'powerpoint/slide/text_picture_split'
7
+ require 'powerpoint/slide/picture_description'
6
8
  require 'powerpoint/compression'
7
9
  require 'powerpoint/presentation'
8
10
 
@@ -30,6 +30,14 @@ module Powerpoint
30
30
  @slides << Powerpoint::Slide::Pictorial.new(presentation: self, title: title, image_path: image_path, coords: coords)
31
31
  end
32
32
 
33
+ def add_text_picture_slide(title, image_path, content = [])
34
+ @slides << Powerpoint::Slide::TextPicSplit.new(presentation: self, title: title, image_path: image_path, content: content)
35
+ end
36
+
37
+ def add_picture_description_slide(title, image_path, content = [])
38
+ @slides << Powerpoint::Slide::DescriptionPic.new(presentation: self, title: title, image_path: image_path, content: content)
39
+ end
40
+
33
41
  def save(path)
34
42
  Dir.mktmpdir do |dir|
35
43
  extract_path = "#{dir}/extract_#{Time.now.strftime("%Y-%m-%d-%H%M%S")}"
@@ -46,6 +54,7 @@ module Powerpoint
46
54
  render_view('content_type.xml.erb', "#{extract_path}/[Content_Types].xml")
47
55
  render_view('presentation.xml.rel.erb', "#{extract_path}/ppt/_rels/presentation.xml.rels")
48
56
  render_view('presentation.xml.erb', "#{extract_path}/ppt/presentation.xml")
57
+ render_view('app.xml.erb', "#{extract_path}/docProps/app.xml")
49
58
 
50
59
  # Save slides
51
60
  slides.each_with_index do |slide, index|
@@ -61,7 +70,7 @@ module Powerpoint
61
70
  end
62
71
 
63
72
  def file_types
64
- slides.select {|slide| slide.class == Powerpoint::Slide::Pictorial}.map(&:file_type).uniq
73
+ slides.map {|slide| slide.file_type if slide.respond_to? :file_type }.compact.uniq
65
74
  end
66
75
  end
67
76
  end
@@ -18,6 +18,10 @@ module Powerpoint
18
18
  save_slide_xml(extract_path, index)
19
19
  end
20
20
 
21
+ def file_type
22
+ nil
23
+ end
24
+
21
25
  def save_rel_xml(extract_path, index)
22
26
  render_view('textual_rel.xml.erb', "#{extract_path}/ppt/slides/_rels/slide#{index}.xml.rels")
23
27
  end
@@ -18,7 +18,7 @@ module Powerpoint
18
18
  end
19
19
 
20
20
  def save(extract_path, index)
21
- copy_media(extract_path)
21
+ copy_media(extract_path, @image_path)
22
22
  save_rel_xml(extract_path, index)
23
23
  save_slide_xml(extract_path, index)
24
24
  end
@@ -40,11 +40,6 @@ module Powerpoint
40
40
  end
41
41
  private :default_coords
42
42
 
43
- def copy_media(extract_path)
44
- FileUtils.copy_file(@image_path, "#{extract_path}/ppt/media/#{@image_name}")
45
- end
46
- private :copy_media
47
-
48
43
  def save_rel_xml(extract_path, index)
49
44
  render_view('pictorial_rel.xml.erb', "#{extract_path}/ppt/slides/_rels/slide#{index}.xml.rels")
50
45
  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")
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")
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
@@ -20,5 +20,11 @@ module Powerpoint
20
20
  def require_arguments(required_argements, argements)
21
21
  raise ArgumentError unless required_argements.all? {|required_key| argements.keys.include? required_key}
22
22
  end
23
+
24
+ def copy_media(extract_path, image_path)
25
+ image_name = File.basename(image_path)
26
+ dest_path = "#{extract_path}/ppt/media/#{image_name}"
27
+ FileUtils.copy_file(image_path, dest_path) unless File.exist?(dest_path)
28
+ end
23
29
  end
24
30
  end
@@ -1,3 +1,3 @@
1
1
  module Powerpoint
2
- VERSION = "1.7"
2
+ VERSION = "1.8"
3
3
  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,5 @@
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/slideLayout9.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"/>
4
+ <Relationship Id="rId2" Target="../media/<%= image_name %>" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"/>
5
+ </Relationships>
@@ -0,0 +1,115 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
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 1"/>
21
+ <p:cNvSpPr>
22
+ <a:spLocks noGrp="1"/>
23
+ </p:cNvSpPr>
24
+ <p:nvPr>
25
+ <p:ph type="title"/>
26
+ </p:nvPr>
27
+ </p:nvSpPr>
28
+ <p:spPr/>
29
+ <p:txBody>
30
+ <a:bodyPr/>
31
+ <a:lstStyle/>
32
+ <a:p>
33
+ <a:r>
34
+ <a:rPr lang="en-US" dirty="0" smtClean="0"/>
35
+ <a:t><%= title %></a:t>
36
+ </a:r>
37
+ <a:endParaRPr lang="en-US" dirty="0"/>
38
+ </a:p>
39
+ </p:txBody>
40
+ </p:sp>
41
+ <p:pic>
42
+ <p:nvPicPr>
43
+ <p:cNvPr id="5" name="Picture Placeholder 4"/>
44
+ <p:cNvPicPr>
45
+ <a:picLocks noGrp="1" noChangeAspect="1"/>
46
+ </p:cNvPicPr>
47
+ <p:nvPr>
48
+ <p:ph type="pic" idx="1"/>
49
+ </p:nvPr>
50
+ </p:nvPicPr>
51
+ <p:blipFill>
52
+ <a:blip r:embed="rId2">
53
+ <a:extLst>
54
+ <a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
55
+ <a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0"/>
56
+ </a:ext>
57
+ </a:extLst>
58
+ </a:blip>
59
+ <a:stretch>
60
+ <a:fillRect/>
61
+ </a:stretch>
62
+ </p:blipFill>
63
+ <% if coords.any? %>
64
+ <p:spPr>
65
+ <a:xfrm>
66
+ <a:off x="<%= coords[:x].to_s %>" y="<%= coords[:y].to_s %>"/>
67
+ <a:ext cx="<%= coords[:cx].to_s %>" cy="<%= coords[:cy].to_s %>"/>
68
+ </a:xfrm>
69
+ <a:prstGeom prst="rect">
70
+ <a:avLst/>
71
+ </a:prstGeom>
72
+ </p:spPr>
73
+ <% else %>
74
+ <p:spPr/>
75
+ <% end %>
76
+ </p:pic>
77
+ <p:sp>
78
+ <p:nvSpPr>
79
+ <p:cNvPr id="4" name="Text Placeholder 4"/>
80
+ <p:cNvSpPr>
81
+ <a:spLocks noGrp="1"/>
82
+ </p:cNvSpPr>
83
+ <p:nvPr>
84
+ <p:ph type="body" sz="half" idx="2"/>
85
+ </p:nvPr>
86
+ </p:nvSpPr>
87
+ <p:spPr/>
88
+ <p:txBody>
89
+ <a:bodyPr/>
90
+ <a:lstStyle/>
91
+ <% content.each_with_index do |c, index| %>
92
+ <a:p>
93
+ <a:r>
94
+ <a:rPr lang="en-US" dirty="0" smtClean="0"/>
95
+ <a:t><%= c %></a:t>
96
+ </a:r>
97
+ <% if content.length == (index + 1) %>
98
+ <a:endParaRPr lang="en-US"/>
99
+ <% end %>
100
+ </a:p>
101
+ <% end %>
102
+ </p:txBody>
103
+ </p:sp>
104
+
105
+ </p:spTree>
106
+ <p:extLst>
107
+ <p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}">
108
+ <p14:creationId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1435759726"/>
109
+ </p:ext>
110
+ </p:extLst>
111
+ </p:cSld>
112
+ <p:clrMapOvr>
113
+ <a:masterClrMapping/>
114
+ </p:clrMapOvr>
115
+ </p:sld>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
3
+ <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" Target="../slideLayouts/slideLayout4.xml" />
4
+ <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="../media/<%= image_name %>" />
5
+ </Relationships>
@@ -0,0 +1,114 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
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 1"/>
21
+ <p:cNvSpPr>
22
+ <a:spLocks noGrp="1"/>
23
+ </p:cNvSpPr>
24
+ <p:nvPr>
25
+ <p:ph type="title"/>
26
+ </p:nvPr>
27
+ </p:nvSpPr>
28
+ <p:spPr/>
29
+ <p:txBody>
30
+ <a:bodyPr/>
31
+ <a:lstStyle/>
32
+ <a:p>
33
+ <a:r>
34
+ <a:rPr lang="en-US" dirty="0" smtClean="0"/>
35
+ <a:t><%= title %></a:t>
36
+ </a:r>
37
+ <a:endParaRPr lang="en-US" dirty="0"/>
38
+ </a:p>
39
+ </p:txBody>
40
+ </p:sp>
41
+ <p:sp>
42
+ <p:nvSpPr>
43
+ <p:cNvPr id="3" name="Content Placeholder 2"/>
44
+ <p:cNvSpPr>
45
+ <a:spLocks noGrp="1"/>
46
+ </p:cNvSpPr>
47
+ <p:nvPr>
48
+ <p:ph sz="half" idx="1"/>
49
+ </p:nvPr>
50
+ </p:nvSpPr>
51
+ <p:spPr/>
52
+ <p:txBody>
53
+ <a:bodyPr/>
54
+ <a:lstStyle/>
55
+ <% content.each_with_index do |c, index| %>
56
+ <a:p>
57
+ <a:r>
58
+ <a:rPr lang="en-US" dirty="0" smtClean="0"/>
59
+ <a:t><%= c %></a:t>
60
+ </a:r>
61
+ <% if content.length == (index + 1) %>
62
+ <a:endParaRPr lang="en-US"/>
63
+ <% end %>
64
+ </a:p>
65
+ <% end %>
66
+ </p:txBody>
67
+ </p:sp>
68
+ <p:pic>
69
+ <p:nvPicPr>
70
+ <p:cNvPr id="4" name="Content Placeholder 3"/>
71
+ <p:cNvPicPr>
72
+ <a:picLocks noGrp="1" noChangeAspect="1"/>
73
+ </p:cNvPicPr>
74
+ <p:nvPr>
75
+ <p:ph sz="half" idx="2"/>
76
+ </p:nvPr>
77
+ </p:nvPicPr>
78
+ <p:blipFill>
79
+ <a:blip r:embed="rId2">
80
+ <a:extLst>
81
+ <a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
82
+ <a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0"/>
83
+ </a:ext>
84
+ </a:extLst>
85
+ </a:blip>
86
+ <a:stretch>
87
+ <a:fillRect/>
88
+ </a:stretch>
89
+ </p:blipFill>
90
+ <% if coords.any? %>
91
+ <p:spPr>
92
+ <a:xfrm>
93
+ <a:off x="<%= coords[:x].to_s %>" y="<%= coords[:y].to_s %>"/>
94
+ <a:ext cx="<%= coords[:cx].to_s %>" cy="<%= coords[:cy].to_s %>"/>
95
+ </a:xfrm>
96
+ <a:prstGeom prst="rect">
97
+ <a:avLst/>
98
+ </a:prstGeom>
99
+ </p:spPr>
100
+ <% else %>
101
+ <p:spPr/>
102
+ <% end %>
103
+ </p:pic>
104
+ </p:spTree>
105
+ <p:extLst>
106
+ <p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}">
107
+ <p14:creationId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1435759726"/>
108
+ </p:ext>
109
+ </p:extLst>
110
+ </p:cSld>
111
+ <p:clrMapOvr>
112
+ <a:masterClrMapping/>
113
+ </p:clrMapOvr>
114
+ </p:sld>
Binary file
@@ -6,8 +6,11 @@ describe 'Powerpoint parsing a sample PPTX file' do
6
6
  @deck.add_intro 'Bicycle Of the Mind', 'created by Steve Jobs'
7
7
  @deck.add_textual_slide 'Why Mac?', ['Its cool!', 'Its light!']
8
8
  @deck.add_textual_slide 'Why Iphone?', ['Its fast!', 'Its cheap!']
9
- @deck.add_pictorial_slide 'JPG Logo', 'samples/images/sample_jpg.jpg'
9
+ @deck.add_pictorial_slide 'JPG Logo', 'samples/images/sample_png.png'
10
+ @deck.add_text_picture_slide('Text Pic Split', 'samples/images/sample_png.png', content = ['Here is a string', 'here is another'])
10
11
  @deck.add_pictorial_slide 'PNG Logo', 'samples/images/sample_png.png'
12
+ @deck.add_picture_description_slide('Pic Desc', 'samples/images/sample_png.png', content = ['Here is a string', 'here is another'])
13
+ @deck.add_picture_description_slide('JPG Logo', 'samples/images/sample_jpg.jpg', content = ['descriptions'])
11
14
  @deck.add_pictorial_slide 'GIF Logo', 'samples/images/sample_gif.gif', {x: 124200, y: 3356451, cx: 2895600, cy: 1013460}
12
15
  @deck.add_textual_slide 'Why Android?', ['Its great!', 'Its sweet!']
13
16
  @deck.save 'samples/pptx/sample.pptx' # Examine the PPTX file
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: powerpoint
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.7'
4
+ version: '1.8'
5
5
  platform: ruby
6
6
  authors:
7
7
  - pythonicrubyist
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-30 00:00:00.000000000 Z
11
+ date: 2015-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 2.13.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 2.13.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubyzip
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: fastimage
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '1'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1'
97
97
  description: A Ruby gem that can create a PowerPoint presentation.
@@ -101,8 +101,8 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - .codeclimate.yml
105
- - .gitignore
104
+ - ".codeclimate.yml"
105
+ - ".gitignore"
106
106
  - Gemfile
107
107
  - LICENSE.txt
108
108
  - README.rdoc
@@ -112,15 +112,22 @@ files:
112
112
  - lib/powerpoint/presentation.rb
113
113
  - lib/powerpoint/slide/intro.rb
114
114
  - lib/powerpoint/slide/pictorial.rb
115
+ - lib/powerpoint/slide/picture_description.rb
116
+ - lib/powerpoint/slide/text_picture_split.rb
115
117
  - lib/powerpoint/slide/textual.rb
116
118
  - lib/powerpoint/util.rb
117
119
  - lib/powerpoint/version.rb
120
+ - lib/powerpoint/views/app.xml.erb
118
121
  - lib/powerpoint/views/content_type.xml.erb
119
122
  - lib/powerpoint/views/intro_slide.xml.erb
120
123
  - lib/powerpoint/views/pictorial_rel.xml.erb
121
124
  - lib/powerpoint/views/pictorial_slide.xml.erb
125
+ - lib/powerpoint/views/picture_description_rels.xml.erb
126
+ - lib/powerpoint/views/picture_description_slide.xml.erb
122
127
  - lib/powerpoint/views/presentation.xml.erb
123
128
  - lib/powerpoint/views/presentation.xml.rel.erb
129
+ - lib/powerpoint/views/text_picture_split_rel.xml.erb
130
+ - lib/powerpoint/views/text_picture_split_slide.xml.erb
124
131
  - lib/powerpoint/views/textual_rel.xml.erb
125
132
  - lib/powerpoint/views/textual_slide.xml.erb
126
133
  - powerpoint.gemspec
@@ -130,7 +137,6 @@ files:
130
137
  - samples/pptx/sample.pptx
131
138
  - spec/test_spec.rb
132
139
  - template/_rels/.rels
133
- - template/docProps/app.xml
134
140
  - template/docProps/core.xml
135
141
  - template/ppt/_rels/.keep
136
142
  - template/ppt/media/.keep
@@ -173,12 +179,12 @@ require_paths:
173
179
  - lib
174
180
  required_ruby_version: !ruby/object:Gem::Requirement
175
181
  requirements:
176
- - - ! '>='
182
+ - - ">="
177
183
  - !ruby/object:Gem::Version
178
184
  version: 1.9.2
179
185
  required_rubygems_version: !ruby/object:Gem::Requirement
180
186
  requirements:
181
- - - ! '>='
187
+ - - ">="
182
188
  - !ruby/object:Gem::Version
183
189
  version: '0'
184
190
  requirements: []
@@ -1,2 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
- <Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><TotalTime>0</TotalTime><Words>43</Words><Application>Microsoft Macintosh PowerPoint</Application><PresentationFormat>On-screen Show (4:3)</PresentationFormat><Paragraphs>15</Paragraphs><Slides>8</Slides><Notes>0</Notes><HiddenSlides>0</HiddenSlides><MMClips>0</MMClips><ScaleCrop>false</ScaleCrop><HeadingPairs><vt:vector size="6" baseType="variant"><vt:variant><vt:lpstr>Fonts Used</vt:lpstr></vt:variant><vt:variant><vt:i4>2</vt:i4></vt:variant><vt:variant><vt:lpstr>Theme</vt:lpstr></vt:variant><vt:variant><vt:i4>1</vt:i4></vt:variant><vt:variant><vt:lpstr>Slide Titles</vt:lpstr></vt:variant><vt:variant><vt:i4>8</vt:i4></vt:variant></vt:vector></HeadingPairs><TitlesOfParts><vt:vector size="11" baseType="lpstr"><vt:lpstr>Arial</vt:lpstr><vt:lpstr>Calibri</vt:lpstr><vt:lpstr>Office Theme</vt:lpstr><vt:lpstr>Bicycle Of the Mind</vt:lpstr><vt:lpstr>Why Mac?</vt:lpstr><vt:lpstr>Why Iphone?</vt:lpstr><vt:lpstr>JPG Logo</vt:lpstr><vt:lpstr>PNG Logo</vt:lpstr><vt:lpstr>GIF Logo</vt:lpstr><vt:lpstr>SVG Logo</vt:lpstr><vt:lpstr>Why Android?</vt:lpstr></vt:vector></TitlesOfParts><Company></Company><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>15.0000</AppVersion></Properties>