thinreports 0.6.0.pre3 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. data/README.rdoc +37 -32
  2. data/doc/yardoc_templates/default/layout/html/footer.erb +1 -1
  3. data/lib/thinreports.rb +2 -1
  4. data/lib/thinreports/config.rb +21 -0
  5. data/lib/thinreports/core/errors.rb +14 -1
  6. data/lib/thinreports/core/format/builder.rb +6 -1
  7. data/lib/thinreports/core/page.rb +6 -6
  8. data/lib/thinreports/core/shape.rb +8 -9
  9. data/lib/thinreports/core/shape/base/internal.rb +6 -12
  10. data/lib/thinreports/core/shape/basic.rb +3 -0
  11. data/lib/thinreports/core/shape/basic/block_format.rb +12 -0
  12. data/lib/thinreports/core/shape/basic/block_interface.rb +25 -0
  13. data/lib/thinreports/core/shape/basic/block_internal.rb +33 -0
  14. data/lib/thinreports/core/shape/basic/interface.rb +37 -11
  15. data/lib/thinreports/core/shape/basic/internal.rb +3 -12
  16. data/lib/thinreports/core/shape/image_block.rb +15 -0
  17. data/lib/thinreports/core/shape/image_block/format.rb +13 -0
  18. data/lib/thinreports/core/shape/image_block/interface.rb +19 -0
  19. data/lib/thinreports/core/shape/image_block/internal.rb +16 -0
  20. data/lib/thinreports/core/shape/list/events.rb +19 -2
  21. data/lib/thinreports/core/shape/list/manager.rb +17 -4
  22. data/lib/thinreports/core/shape/list/page.rb +2 -2
  23. data/lib/thinreports/core/shape/list/page_state.rb +4 -0
  24. data/lib/thinreports/core/shape/list/section_internal.rb +4 -0
  25. data/lib/thinreports/core/shape/manager/format.rb +1 -1
  26. data/lib/thinreports/core/shape/manager/internal.rb +24 -11
  27. data/lib/thinreports/core/shape/manager/target.rb +2 -2
  28. data/lib/thinreports/core/shape/style.rb +15 -0
  29. data/lib/thinreports/core/shape/style/base.rb +149 -0
  30. data/lib/thinreports/core/shape/style/basic.rb +17 -0
  31. data/lib/thinreports/core/shape/style/graphic.rb +60 -0
  32. data/lib/thinreports/core/shape/style/text.rb +138 -0
  33. data/lib/thinreports/core/shape/text/internal.rb +4 -0
  34. data/lib/thinreports/core/shape/text_block.rb +16 -0
  35. data/lib/thinreports/core/shape/{tblock → text_block}/format.rb +3 -3
  36. data/lib/thinreports/core/shape/{tblock → text_block}/formatter.rb +7 -7
  37. data/lib/thinreports/core/shape/{tblock → text_block}/formatter/basic.rb +1 -1
  38. data/lib/thinreports/core/shape/{tblock → text_block}/formatter/datetime.rb +1 -1
  39. data/lib/thinreports/core/shape/{tblock → text_block}/formatter/number.rb +1 -1
  40. data/lib/thinreports/core/shape/{tblock → text_block}/formatter/padding.rb +10 -8
  41. data/lib/thinreports/core/shape/{tblock → text_block}/interface.rb +2 -21
  42. data/lib/thinreports/core/shape/{tblock → text_block}/internal.rb +16 -10
  43. data/lib/thinreports/core/utils.rb +0 -8
  44. data/lib/thinreports/generator.rb +2 -2
  45. data/lib/thinreports/generator/configuration.rb +30 -0
  46. data/lib/thinreports/generator/pdf.rb +13 -10
  47. data/lib/thinreports/generator/pdf/configuration.rb +28 -0
  48. data/lib/thinreports/generator/pdf/document.rb +16 -56
  49. data/lib/thinreports/generator/pdf/document/draw_shape.rb +35 -17
  50. data/lib/thinreports/generator/pdf/document/font.rb +25 -9
  51. data/lib/thinreports/generator/pdf/document/graphics.rb +1 -1
  52. data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +18 -4
  53. data/lib/thinreports/generator/pdf/document/graphics/basic.rb +1 -1
  54. data/lib/thinreports/generator/pdf/document/graphics/image.rb +18 -1
  55. data/lib/thinreports/generator/pdf/document/graphics/text.rb +29 -6
  56. data/lib/thinreports/generator/pdf/document/page.rb +70 -0
  57. data/lib/thinreports/generator/pdf/document/parse_color.rb +1 -1
  58. data/lib/thinreports/generator/pdf/document/parse_svg.rb +1 -1
  59. data/lib/thinreports/generator/pdf/drawer.rb +1 -1
  60. data/lib/thinreports/generator/pdf/drawer/base.rb +5 -7
  61. data/lib/thinreports/generator/pdf/drawer/list.rb +4 -4
  62. data/lib/thinreports/generator/pdf/drawer/list_section.rb +8 -3
  63. data/lib/thinreports/generator/pdf/drawer/page.rb +10 -3
  64. data/lib/thinreports/generator/pdf/prawn_ext.rb +16 -21
  65. data/lib/thinreports/layout/format.rb +2 -2
  66. data/lib/thinreports/layout/version.rb +2 -2
  67. data/lib/thinreports/report/base.rb +68 -31
  68. data/tasks/test.rake +48 -4
  69. data/test/benchmark/basic_estimate.tlf +1 -0
  70. data/test/benchmark/bench_basic_estimate.rb +95 -0
  71. data/test/case/character_spacing/character_spacing.rb +7 -0
  72. data/test/case/character_spacing/character_spacing.tlf +1 -0
  73. data/test/case/dynamic_image/dynamic_image.rb +41 -0
  74. data/test/case/dynamic_image/dynamic_image.tlf +1 -0
  75. data/test/case/dynamic_image/img200x100.png +0 -0
  76. data/test/case/dynamic_image/img50x50.png +0 -0
  77. data/test/case/dynamic_style/dynamic_style.rb +154 -0
  78. data/test/case/dynamic_style/dynamic_style.tlf +1 -0
  79. data/test/case/dynamic_style/dynamic_style_in_list.tlf +1 -0
  80. data/test/case/dynamic_style/image.png +0 -0
  81. data/test/case/eudc/eudc.rb +20 -0
  82. data/test/case/eudc/eudc.tlf +1 -0
  83. data/test/case/eudc/eudc.ttf +0 -0
  84. data/test/case/helper.rb +27 -0
  85. data/test/case/hidden_shapes/hidden_shapes.rb +13 -0
  86. data/test/case/hidden_shapes/hidden_shapes.tlf +1 -0
  87. data/test/case/list_events/list_events.rb +32 -0
  88. data/test/case/list_events/list_events.tlf +1 -0
  89. data/test/case/list_header_inheriting/list_header_inheriting.rb +19 -0
  90. data/test/case/list_header_inheriting/list_header_inheriting.tlf +1 -0
  91. data/test/case/list_manual_generation/list_manual_generation.rb +24 -0
  92. data/test/case/list_manual_generation/list_manual_generation.tlf +1 -0
  93. data/test/case/single_line_tblock/single_line_tblock.rb +15 -0
  94. data/test/case/single_line_tblock/single_line_tblock.tlf +1 -0
  95. data/test/case/tblock_styles/tblock_styles.rb +27 -0
  96. data/test/case/tblock_styles/tblock_styles.tlf +1 -0
  97. data/test/case/text_align/text_align.rb +9 -0
  98. data/test/case/text_align/text_align.tlf +1 -0
  99. data/test/unit/core/shape/base/test_internal.rb +65 -85
  100. data/test/unit/core/shape/basic/test_basic_format.rb +30 -0
  101. data/test/unit/core/shape/basic/test_basic_interface.rb +27 -0
  102. data/test/unit/core/shape/basic/test_basic_internal.rb +55 -0
  103. data/test/unit/core/shape/basic/test_interface.rb +84 -36
  104. data/test/unit/core/shape/basic/test_internal.rb +32 -24
  105. data/test/unit/core/shape/image_block/test_format.rb +58 -0
  106. data/test/unit/core/shape/image_block/test_interface.rb +23 -0
  107. data/test/unit/core/shape/image_block/test_internal.rb +28 -0
  108. data/test/unit/core/shape/list/test_events.rb +19 -11
  109. data/test/unit/core/shape/list/test_manager.rb +112 -0
  110. data/test/unit/core/shape/list/test_page.rb +57 -0
  111. data/test/unit/core/shape/list/test_section_format.rb +1 -1
  112. data/test/unit/core/shape/list/test_section_interface.rb +37 -30
  113. data/test/unit/core/shape/list/test_section_internal.rb +39 -14
  114. data/test/unit/core/shape/manager/test_format.rb +12 -18
  115. data/test/unit/core/shape/manager/test_internal.rb +127 -93
  116. data/test/unit/core/shape/manager/test_target.rb +63 -56
  117. data/test/unit/core/shape/styles/test_base.rb +219 -0
  118. data/test/unit/core/shape/styles/test_basic.rb +24 -0
  119. data/test/unit/core/shape/styles/test_graphic.rb +69 -0
  120. data/test/unit/core/shape/styles/test_text.rb +318 -0
  121. data/test/unit/core/shape/{tblock → text_block}/formatter/test_basic.rb +2 -2
  122. data/test/unit/core/shape/{tblock → text_block}/formatter/test_datetime.rb +2 -2
  123. data/test/unit/core/shape/{tblock → text_block}/formatter/test_number.rb +2 -2
  124. data/test/unit/core/shape/{tblock → text_block}/formatter/test_padding.rb +11 -6
  125. data/test/unit/core/shape/text_block/test_format.rb +160 -0
  126. data/test/unit/core/shape/{tblock → text_block}/test_formatter.rb +2 -2
  127. data/test/unit/core/shape/text_block/test_interface.rb +46 -0
  128. data/test/unit/core/shape/text_block/test_internal.rb +128 -0
  129. data/test/unit/core/test_shape.rb +31 -6
  130. data/test/unit/data/basic_layout1.tlf +1 -0
  131. data/test/unit/data/basic_layout2.tlf +1 -0
  132. data/test/unit/data/basic_list_layout.tlf +1 -0
  133. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +81 -52
  134. data/test/unit/generator/pdf/document/graphics/test_text.rb +159 -0
  135. data/test/unit/generator/pdf/document/test_font.rb +21 -6
  136. data/test/unit/generator/pdf/document/test_graphics.rb +2 -2
  137. data/test/unit/generator/pdf/document/test_page.rb +95 -0
  138. data/test/unit/generator/pdf/document/test_parse_color.rb +2 -2
  139. data/test/unit/generator/pdf/test_configuration.rb +24 -0
  140. data/test/unit/generator/pdf/test_document.rb +28 -0
  141. data/test/unit/generator/test_configuration.rb +25 -0
  142. data/test/unit/generator/test_pdf.rb +19 -0
  143. data/test/unit/helper.rb +18 -0
  144. data/test/unit/layout/test_format.rb +24 -7
  145. data/test/unit/layout/test_version.rb +61 -27
  146. data/test/unit/report/test_base.rb +185 -89
  147. data/test/unit/test_config.rb +22 -0
  148. data/test/unit/test_report.rb +4 -4
  149. metadata +94 -43
  150. data/lib/thinreports/core/shape/tblock.rb +0 -16
  151. data/lib/thinreports/generator/pxd.rb +0 -75
  152. data/lib/thinreports/generator/pxd/helper.rb +0 -33
  153. data/lib/thinreports/generator/pxd/list_renderer.rb +0 -58
  154. data/lib/thinreports/generator/pxd/page_renderer.rb +0 -75
  155. data/tasks/clean.rake +0 -6
  156. data/test/unit/core/shape/tblock/test_format.rb +0 -125
  157. data/test/unit/core/shape/tblock/test_interface.rb +0 -40
  158. data/test/unit/core/shape/tblock/test_internal.rb +0 -139
@@ -0,0 +1 @@
1
+ {"version":"0.6.0.pre3","finger-print":1232709718,"config":{"title":"","option":{},"page":{"paper-type":"A4","orientation":"portrait","margin-top":"20","margin-bottom":"20","margin-left":"20","margin-right":"20"}},"svg":"<svg width=\"595.2\" height=\"841.8\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"none\" viewBox=\"0 0 595.2 841.8\"><g class=\"canvas\"><rect stroke=\"none\" stroke-width=\"1\" fill=\"#ff0000\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"172.1\" height=\"84\" x=\"69\" y=\"75\"></rect><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" font-size=\"36\" font-family=\"Times New Roman\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"279.1\" x-height=\"40\" x-left=\"20\" x-top=\"19\" x-valign=\"center\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"279.1\" height=\"40\" x=\"20\" y=\"19\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"159.6\" y=\"46.5\">Visible</text></g><line stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x1=\"297.6\" x2=\"297.6\" y1=\"20\" y2=\"821.8\"></line><!--LAYOUT<rect stroke=\"none\" stroke-width=\"1\" fill=\"#ff0000\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"false\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"172.1\" height=\"84\" x=\"349\" y=\"74\"></rect>LAYOUT--><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"Times New Roman\" font-size=\"36\" text-anchor=\"middle\" x-valign=\"center\" text-decoration=\"none\" x-width=\"279.1\" x-height=\"40\" x-left=\"297\" x-top=\"19\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"279.1\" height=\"40\" x=\"297\" y=\"19\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"436.6\" y=\"46.5\">Hidden</text></g><ellipse stroke=\"#000000\" stroke-width=\"1\" fill=\"#FFFFFF\" fill-opacity=\"1\" class=\"s-ellipse\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"57.55\" ry=\"50.55\" cx=\"205.55\" cy=\"161.55\"></ellipse><!--LAYOUT<ellipse stroke=\"#000000\" stroke-width=\"1\" fill=\"#FFFFFF\" fill-opacity=\"1\" class=\"s-ellipse\" x-display=\"false\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"57.55\" ry=\"50.55\" cx=\"485.55\" cy=\"161.55\"></ellipse>LAYOUT--><image image-rendering=\"optimizeQuality\" preserveAspectRatio=\"none\" class=\"s-image\" x-display=\"true\" x-id=\"\" x=\"96.1\" y=\"177\" xlink:href=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBhIQEBUUExAUFQ8WFhUXFQ8YFRQUFhYVFBcaFhgUFRYXHCYeFxkjGRQUHzsgIycpLCwsFR4xNTAqNSYrLDUBCQoKDgwOGg8PGi4iHyQsLCo1LCosKSopLS4qLCkqKi0tLy0sLCwsLCwvKSwsLC0sLCwsLCwsLCksKSwsNCwpLP/AABEIAPEA0QMBIgACEQEDEQH/xAAcAAABBAMBAAAAAAAAAAAAAAAABAUGBwECAwj/xABQEAABAwICBQcHBgoJAwUBAAABAAIDBBEFIQYHEjFBEyIyUWFxgRRScoKRobEjQmKSs8EzNDVTY3OissLRFSQlQ0R0g9LhVGTwJqOk4/EW/8QAGgEAAgMBAQAAAAAAAAAAAAAAAwQAAgUBBv/EADkRAAEDAgMECAUDAwUBAAAAAAEAAgMEERIhMRNBUWEFIjJxkaGxwRQjgdHwM0LhUmJyFTSSsvEk/9oADAMBAAIRAxEAPwDOsnWRPPUSU1NK6KmiJY+Rh2XyvBs7nDMMBBFhvsSb3AFcPp7m5cSes5lYp5C4uJ3k3J7Tdd1kySOLl7imp44owAEm8j7fcjyPtSlCpjKY2bUk8kPWFjyV3YliFMZXNm1IvJndXvWPJ3dSXIXcZU2QSDkXdRWOTPUfYnBCmMrmyCbtk9SwnJC7tFzZc02oTjsjqCxyQ6h7FNoubLmm9CX8i3qCx5O3q+K7jCmyKQoS3yZqx5IO1TGFzZOSNCV+SDrKx5H2+5dxhc2bklQlPkfatfJD1hTEFzA7guCF38kPYtTTO6veu4guYHcFzBspvoFrNqKGZrJZHSUZID2OJcYwfnxk5i2/Z3HPjmoQRZYV2uINwgyRNkbhcF66/pOL86z6wQvKf9NTfnD7ShMbfksj/Sv7lyo+PgrB0e0EoqxkexizG1DmtvTuis4PIzY3aeC+xyuN6r2k3nuSpIkgOzF16Asc9lmOwn6H1Vrt1EHjX5dkH/2LliOqGlpWbdRifJx3ttGNrbnqF3G5yOQ6lOtXOKPqcNgfI4uks5jnnMnk3uYCTxNgM1Cde0p2qRvC0xt23jCbdHG1mMBYUNTVSVGwc/eRkBuvySXC9AsGqHBrMVc553NvEwk9jXtue4JViuowhpNPVXdwjlba/rs3fVVUq2NUmnUj3ijneXAgmCRxu4bIuYieI2QSL7tkjqsKN0bzhc2yeqmVMDTJHISBqCAq0xfBpqSUxTxlkg4HcR5zSMnDtCRL0Zp9osyvo3t2Ry7A58L7Zh4F9m/U61j4HgF5zQ5otmUzQ1gqWX0I1QhCEBPoQhCiiEIQoop3orqpkrWNlNVC2JwDtlh5WQA7g5osGnsJNlMNIdAaOgwqpMce1NyX4d9nPuCNx3M9UDxUA1WVbo8Vg2SQH7bHDraY3Gx9ZrT4K4tYv5Lqv1R+IT8TWFhNs152tlmZUsjLsiQcst/mvOKEISC9EhCEKKIQhCiiEIQooklWOd4LglFZvCTphuiUf2ihCELqou9J0vBK0jpekliC/VMxdlX7qh/JUfpzfaFRXXt+EpPRm+MalWqH8lR+nN9oUh1saH1NdyDqdgeY+UDmbTWmz9kgjaIB6J48Qn3AmGw4BeZie1nSBc42F3e6pBPWhbiMRpNnfy8XsLgD7iU6N1U4of8ADAd8sP8AvUz0C1buoXmrrXMaYmuLWbQLWZHakkduybfIbt90pHE8uGS2qitgEbrOBNrWBurKq6lsUb3vNmMa5zj9FoufcF5Vcbm/uVk6yNZraphpqUnkD+EnII5QDPYYDmG33k77W3b61V6mQOIA3IHRVK+Fhc/Iu3dyEXTvo5jsdI9xfRwVIdYWlBOza99neBe/EHcF6AwDD6R8MU8VJDHykbJBaKNpbttDrXDRmLqkUO03o9XWmm1ZcHfcLzSRZYUr1pPvi1R2GIeyFiSaL6Ux0VxJQ09Q0m5dI0F4FrWY4ggDK+7eUMtAdhJTLZXOiEjW3JANr8VH7oIXqHDcPpw1skUEbNpocC2NjTZwuNw7V5z0r/H6r/MT/auRZYdmAbpWjrxUuLQ21uacdWv5VpfTd9m9XRrF/JdV+qPxCpfVr+VaX03fZvV16fwufhtS1rS57o7NaASSS4AAAbyjwfplZ3SX+7j+n/YrzchWhgei2E0VhiNTE+ry2qfaJZEfMcGdJw47WXZxM6p9E8JqogY6amfEcg+MNHhtszB8boLacu3hPS9JsjPZJHG2X04rzqhWHrD1Y+RMNRTFzqYHnxnN0dzk4H5zL2GeYy38OWrimwyrIpqml/rJ2iyflZQJLXds7LXANcG+0NPHfTZHFhOSY+MjMO2aCRy1CgKFfz9VWFsBcadxABJHKzHIC+QDlTWkmJUkzm+SUfk7G7VyZHyOkvbZLg4kNtY7iel2KSQlgzKrTVzKk2Y05b8vumZClGh2I0Ac2GsomyNe+3lIfI17No2G00OALR2WI7VOtNMAwfDIg91FykryRHDy0wvbe4nbyaLjr3hRsWJuK4XZawRyCMsNzpa2fmqUrOHikyV15ubgWFzZudgDwzzSRdZoiSdpCEIVkNdabpBLUhp+kEuQn6pmLRX7qh/JUfpzfaFM2uPSGppXUzYJ3xB4lLtg2JLSwC535XPtTzqh/JUfpzfaFRfXu3n0h4bMw98aeeSIcuS81C0O6RIcL5u91HtGdaNZTztM875qckCRj7OcG8XNda9xvtextZXvzJo+D4nt72ua4e8EH3ryorr1N6UctTmle75WDNl95hJ3eq427nNQ6aU3wuTXStG0N20YtbW3qqx000aOH1j4c+T6UTjxjdu8RYtPa1MSv7Wlop5bRl7G3qILvZbe5vz4/EC47WjrVAoE0eB3JaNBU/ERAnUZH85oXprRBtsPpB/28H2bV5lK9PaMC1DTD/t4fs2o1JqUh032Gd6obWSf7VqvTb9mxRl25SfWXHs4rU+m0+2Nh+9Rh25LSds9616b9FncPReo8C/FYP1MX7gXnLSv8fqv8xP9q5ejcC/FYP1MX7gXnLSv8fqv8xP9q5N1PZCw+iP1pPzenHVr+VaX03fZvV4aa174MPqJI3bMjYnbLuIJyuO0XVH6tfyrS+m77N6ujWL+S6r9UfiFKf8ATK50mAauMHl6lecib9/Wn3Q3SyTDqlsjSTCSBNFwczibecN4PhuJTChJAkG4XoXsbI0tcMivVM8TKiEtNnRSMIPU5jxb3grzCyR9LUXY60sMnNd9KN2/2hehdA6rawulc47oWgk9TObf2NXnauqOUlkf573u+s4u+9OVJuGlYXRLC18sZ0GXqvTGjuNMraWOdm57blvmuGTmnucCPBUNrD0Z8grXtaLQSfKRdWy45s9V1x3bPWpNqX0m5OZ9I88yW74uyRo5zfWaL+p2qbaztF/LaJxY288N5I+sgDnsHe0e1rVZ3zor7wgRH4GrLD2Xem7w08VSuh+EmqroIrZGRpd6DOe/9lpTnrNx7yvEZLG8UXyTOrmE7Z8Xl3gAl+gn9SoqvETk8N5Cn7ZZLXcO7meAcoKT/wDqVPVYBxzW20bScv3NFvqcz7BcKvcO9JEsq+j4pGus0VpO0hCEKyGt4ekO9L03x7x3hSfRmupIZi+rpnTxhvNjDtkbV97hcbQtfL3FDcLkIzHFrSQL8ldeqiAswqG4ttGRw7nSOsfEZ+KY9eGGOfTQzNBLYnuD+wSgWcezaY0esEiOvJjQGx0BDQAADKGgAZAANYbLk/XltAtfh7XMIsWma4IO8EGOxCcMkZZgusBlNVNqNuGbybXG/wCqqtOWjuOPoqmOePpMObeDmnJzD3i/cbHglmk+OUlTsmnoG0rwSXlshcHA7gGWAHeEwpDsnIr0Q+Yyz22vuNvZepsJxSOqhZNE7ajeLg8e0EcCDcEdYVO6xNWs0U7pqWF0lPIS4xsaXOiccyNgZlhNyCBluysLx3RLTqpw1x5Mh8Ljd0Dr7JPnNIza63Eb+INgphWa9JC20VGxr/OfIXgeqGtv7U46WORtnZFYUdHU0kxMIu08T6qtazDpYSBLFJGXC4D2OYSN1xtAXC9FaB4i2fDaZwO6JrHdjohsOHtb7159xvHp62XlZ5C99rDcA0ea1oyATvoXp7NhjiGtElO43fATbPdtMd811hbcQcuoIUMjWO5J6vpZKiEDLEM+Se9cej8kdaakMJglay8gBIa9g2C1x4Xa1pz359SheC4JLWSiKJpJPSf81jeL3u3NaBnmrdZrvoy3nU9QHWzbaMjuvtj4KE6Yazpa1hhhjFPTHpNBu+TscRYBvYN/EldkEd8QP0VKR9UGCJ0drZXJ9t6vWiia2JjWm7Axoad92gAA3HYvNml8ZbiFWDv8omPgZHEe4hTmHXZyUEccdHcsjY0udLYXa0DINbuy60yYvrONS1+3h1GXuaW8q6PbeLi1wTnccFeZ7HgAFLUFNUU73OLbg8wkGrUf2rS+m77N6vTSzC3VVDPCy3KPjcG3yBdvAJ4XIt4qgNC8ajoq6KeQOLI+UJDQC4kxvaLXI4uCkVFrjrWVD5HBkkL3XFOcgwcAx4FxkOIN99lyGRrWWdvRa+kmmmD4/wBoGvG5UFlicxxa5pa5pIc0ixBGRBHAgoggc9zWsaXPcQ1rRmS4mwA7SVYWNaX4PXnlKiiqI6i2ckRjubbrnaAd3lt01U2ltHREuoaJ3L2IbVVLxI5l8iWRs5oNuN/5IJY0HtZJ9s8jm/pkO+lvG+inOmWNNwrCYqNrh5U+FseR6LbWkkPUDzgO09hVLJRX4hJUSOlleXyuN3PO8/yHYMgk65JJjPJdpabYMscyTcnmutJVPikbIx2zIxwc13U5puD7QvTOjeOMraWKdu57ec3zXjJzfBwIXmFWlqXxl0bKtrz/AFWNgmLuDDmHe1rb+oi0z8LrcUl0tTiSLGNW+6S64sSjY+Kiha1kUd5XsaAG8pKSRkONi53+oq3S3GsUdVVEs7+lI8ut1A7m+DbDwSJBkdicSn6aHYxNZv39+9caropGltT0SkSszRSXVCEIV0JZbvCcU2pyQ5EeLehCEISOhCEAKKIQplo5qrrauznt8nhPz5Adoj6MfSPjYKw6PUzh7GAP5WR/F5kLbnsa2wAR2QPcs+bpGCE2JueWaopZYwkgDeSAO85K+JNUuGNFzFLb9bJ/NIZdBcHjNzFNcZ35SXePWVzTOGpCC3pWF3ZDvAfdUoQhXHi+jmCRSO5WGbadz+a6W3ynOys7dmmt0Ojo3xT+2f8A3Khitq4I7K3GLtjefp/KrBCs7/03+bn/APkf7k4UeC4BJG6XkZGwN3zyOqI2X81rnO57votuVBDfRw8VHVuAXdG8fT+VUKFZ8VLo3PzQ+SB17BznTNv23ftNA77LTFNTRczlKGqZMw5hri3MfRkZzXHvA71Ni7dn3KCviBs8Fv8AkLKs0JViWFzU0hjmidHIPmuFsusHcR2jJJUEiyeBBFwhCELi6ulNTOke1jGl0jiGtYMyXE2ACsvSqiGD4OykBBqqp15nDqbYvAPmjmM7buPFV3heKS0srZYX7Erb7L7Nda4IOTgRuJ4LrjeP1FbIJKiUyPA2QbNaAN9gGgAZlFa4NaeKUmifJI3TCM+ZO76JvQhCEm1zn6JSFL5uie5IEZmiXl1QhCFdBQnEJuTizcO4IciPFvWVvFE57g1rS5xyDQCST1ADMqVaC6vpcRftuvHSNPOmtm629kd957dw7TkrfMeG4NDfZjhFrXttSyW4Xze8+7uV44S4YjkEpU9INids2DE7gFWOjmp6rqLOnIp4uojalI9Dc31jfsVi4fo7heDtD3GNsn5+VwdKfQvu7mAKD6Ra355iW0zeQi/OGzpSP3WeFz2qCzVLpHFz3Oc873uJc495OZUM0cfYFzxKGKOqqs53YW/0j3/CrkxDXBSMuIo5ZT12Ebfa7P8AZTQ/XQ++VG23bKSfcxViCtwUF1XKd6cj6HpGjNt+8n2srdwvXBBI4NngdED88HlGjvFg63cCpJX4WyojEkLmua4XFiC1wPFpVAAqzNUmkDQXUrnO2nXdG05sJGbg3K7TbO2YNr5G9zQVJe7BIkK/oxkDDNT3FtRqLJZplhpMEEhBB2OTcLcWbr/texV+cBlmceTZdrenISGsYOt73Wa0d5V9YlhrKhmw8XbcHjvHdmq70/0amqpY6eBkjII23sITyDnv3uL2u3gADNtxc55o80FzdK0HSGEYNNczoB+ZKByVNJS9ECsqB84hzaVh7G5On8dlvYUzYni81S4OmkLyBZoyDWN81jBZrG9gAUsn1S1UQ2pqikij/OPlc0e9m9cJ9CoIhcVEtW63RpImPb3co559zD3IGBwytZaQqYicWLEeP5kPJQ9OGC4/UUb9uCZ0buIGbXdjmnJ3iFriVPsG3k0kQ65S8u9pa1v7KQAqmYKZsHtzGSujBsepNIIDT1UbWVbQSLZHtkgccx2tN+24VWaU6My4fUOhkz4skAsHsO5w6uojgR4pBR1r4ZGyRuLZGODmuHAj493FW/pbGzGMFbVsaOXiaZLD5pblPH3WaT6rUY/NbnqFnD/45QG9hxtbgVTCEISi2UIQhRRCEIUUWsm49xTenFwyKbkWNLy7kIQhEQUK0dXOrJ1Y1k9SC2ksC1m5033tZ27zw61VysGXWHMcPgpISY2MiDJZAbPfa/NaR0W28T2Df27Bm5ClEzhghyvqeAU90s1mwUTfJ6JrHSMGzcAcjFbLZAHSI6hkOJ4Ko8RxKWokMk0jnyO3vcbnuHUOwZJKspaSV0mqapaSOnHV13neVkFbgrmsgoKeBXUFd6eF0jg1jXOedzGguce4DMpM1ycI8bna3ZZM5jDvbGeSB7wy1/FcAG9dJd+1P1FoBUkB07oqWPzp5GsNuxl7+2ylWimFYXTVUWzWmoq9qzNkEMDiCPmgjcTvcVVpfc3OZ6zmfapbqvozLiUZtlG18h8Glo/aeEeJzcYDW796QrI5DC9z5MgDk0Abudz5q87pJWSh0bwHHcQSw2e3hcdRCjVXpRs4oyK/MBER9J4/3Fo8FF9KMWkgrZg17mkPuCCQbOAd/EtGSoDQSONl5eDo973AE2uMSiem2jNRC/lnTPqadxs2qc4vc0n5kt77DvceHUopZT9ulT2vc47Lg8WkjLQY5Ad4ezcb9lk04ro3HMx09DcsaNqWjJ2pYRxczjJF27xxSQcH6L0jC+IASacfv+WPLRMVPi88fQqJWDqbI9o9gNl1dpFOemY5P1kMMh+s5hd702krUldBKs5reCcji8Z6dHAe1vLRH9iTZ/ZVman8YimZUUghcxhHKbJk5QEPtG8DmAgdHeTvVPkqealpSMTI86CUHwcw/cjRHrBZ9awGF3LPUqHVtIYpXxnex7mHvY4t+5cbJ/02g2MSqh+mefrHa/iTJZJuyJC2YziYHcQCudkWXSyLKt0Sy52RZdLIspdSy57Ka08WTQ4ZosR1S825YQhCMl0JypDzB4/FNqcaM8weKHLoixaruhCEsmllCwsqKyyCtwVzWQVxWBXUFWtqnoRT0tRWyCzSCGn9HEC55He7L1FWGFYe+omZDGLySODR48T2AXJ7AVb2sGRlBhLKaPIP2Ih1lrec9x77Z+mmadtryHd6rL6SkxhlMNXkX7hr+d6rKoxqR8plv8oXl9/pF218U+axqjbqmTN6E9PDKPEFv8IUOL084tVcrQ0jvnRmeB3c1zZWfsykeqhtN2kfX88U29gbIxw5jxF/ZNZkXSkxB8L2yRvLJGm7Xg2I/wDOpIi9YL0MJg2IsVJKihhxPnQhsOI/Op8mxVJ86K+Ucp8zceHFRCeJzHFrmlr2khzCCCCN4IOYKU8pZSFuJQ4i0R1jxHVABsWIkZOtkI6q3Sbw5TeONxdMseHZHVZ0sTo825t4bx3cR5j0iBKsHUhBtYi93BtO/wBrnxgfeoTi2ES0spimYWvGfWHNO57HDJzT1hWjqHw7m1M5G8xxNPogvd+8xMxjrBZlZINi4hRTWK3+1Kn02/ZsUcsnzTOflMRqnfpnj6h2P4UzWWfIbvPet6nbaFg5D0WlkWW9kWQ7o1lpZFlvZFlLqWWlkzyjnHvPxT3ZM1SOe7vPxR4TmUvOMguSEITCVQnChPN8Sm9LqDonvQ5OyiR6pUhYQl0ysoQhcVllCwpXq+0NdiFRd4PksZBldu2uIiB6zx6h3hWa0uNgqSytiYXv0CmmqDRLk2Gskbz3jZhB4R8X+taw7B9JMWuDFjLWthbciFguBnz5LOO76IjVzxxhoAAAaAAABYADIADgFBtNtOZaKoEMYgY9zA9j5g4xvuS0tL2uHJuBbvddpuLlq1HxBsWC9l5anq3y1Zmw3NjYXtbyO77qnI8Nnf0YJXd0bz8AnODRyudC6MUVRbbY8fIyDMNc07xxDm/VTxiGtnFY3lj2xRPHzeSO47iNpxuDwIuCm+TWtijv8SB3RQ/e0pPDG3efBbu0qXjJrfEn2XCLV9iT91FJ47Df3nBKo9VeJu/w4HfLF9zim+bWFiTt9bL4bLf3WhIptLq52+uqT2ctIB7AVLRc1C6r/tHifdSiLU3iLt/IN75D/CwpSNStUOnVUzR3yH4tCgE2Kzv6U8ru+R5+JSR5vvz781b5fDzQz8T/AFj/AI/yrmodBIzCKWrxGnli3QtFmzQyOyHIvL77JNrsIIPYpnono2zDKMQh+3sl73y7OztEm97XNrNAG/5qpvVHgTZq4zvAEFK0yucdwfYhlz2Wc/1FcWM4qHYVLOBbbpnPaOI5SO7Qe3nBORkBuKywqtrzIIy69yL5AZlUBUSmR7nne5znHvcb/eueyt9lFlhXXtQLLTZRsreyLKXXbLTZRsreyLKXUstNlMtaPlHd6fbJkxEfKO8PgEeA9ZL1A6oSZCEJtJIS2gOR7wkSV0J3+Co/sq7NUsQsLKWTCFlYTno9o9NXTCKFt3HNzz0WN4ueeA953BdAJNguueGjE42C6aM6Ny19QIoh2vkI5rGcXH7hxKvqip6fDadkMYsAMh85xO97z1k/yG5MkbqbBacQQgPqHC7nHe53nyW3Dqb/AMlRifG3vcXOddx3lNhzYBbV3osKbaVxvowac+anL8e7VC9clKJqSmqR81zo3HseLj2OjP1kkOJnrTtIPLMHrIt74xyrfV+UFvGN48VGymS7TwVRTfDObKNxHgcvdVRSYuWtEcjRLBwicSCy+8xPGcZ7sjxBXZ+FCQF9M4yNAJdCQBMwDeS0fhGjzmX6yGpqWY5C0hzSQ4EEOBIII3EEbig3vqtsi2bf4WVqU6f0jHPlUDZl/wCrY0XJ/TRiwk9JtncTt7kmrsMfEA42dE7oTMO1G+3AO4H6Js4cQFMPBc2gORyKRFalbFTTVdo02oqTUTWFJSjlHuPRLxzmg9gsXn0R1ojG4jZAmkEbS4p3x/8AsjBI6UZVlZd83W1hA2mnw2I+3nqc6bnkcGcz9HBGPrMB9wKpfSjH3YniBkN9hz2xxM82Pas0d5uSe1xVwa3JtmhY3zpm5djWvPxAR3P6jyNLWWa6Atlga7tFxcfL00VOWRZdLIssS69VZc7IsulkWUupZc7IsulkWUupZc7JkxUfKnuHwT/ZMeMj5T1R96Ypz10vUDqJAhCE8s9CU0ZzKTLtSnPwXHaLo1S8FZXMFTPQnVxPXkSPvFSfnSOc8dUQO/0jl37kAMLjYK8kzIm4nmwTVovopPiEuxE2zRblJj0GA8T1nqaMz3XKtCsxKmwSDyalAdVEXfIbEg26cnW7qZuA96fSfS6DC4fIqBrRK3J7xmIyd5JPTlPbu49SrCStc4kkkuJJJJuSTvJJ3lGJEIs3Xjw7kqyJ9aQ+QWZuHHmft+F8nxNz3FznFziblxNySeJXI1vamXykrHlBSq0xEAnk1vapVq3xQeWGJ2bZo3Nt1lvOHuD/AGqu+XKW4Hixp6mGW+TJGOPog879m6vGcLgUKop9pE5vEf8AiacYw809RLCd8cj2eDXEA+IAPikam+uDDeSxJzx0Zo2SDvA5N37gPrKDoz24XEIEMu0ja/iEJTQ4lJCTskbLsnxuAdG8Dg9hyd37xwIKSoUC66xyKeqbDI6x7W0/ydS42FK5xLHH9DKd3Xsvzyyc45KX6eVseGUMeFwOvI4B9VIOJdY2PpEA24Na0cVvoTh7MKon4pUN+We0tpITvO0DZ3ZtW38GAnioprFscRkeOjK2GUf6sTHH3kox6rb7ykojtpw09lufeRb0v4pu0Xh266mb51RCPbI1W7rjnypmdsrrdwaB+8VWGryHbxSlH6UO+oC7+FT/AFuTXq4m+bDfxc93+0IMhtA76JhwxV8Y4An1CgdkWW9kWWTdbtlpZFlvZFlLqWWlkWW9kWUupZaWTHjo549H7yn+yZNIG85ncfj/AMo9OeugVA6iaUIQtJZiE5YBg81XMIoIy+Ug80WFgN5JOQA602qb6nKgMxWO+4xyj9gn7lYAE2KHM8sYXN1AViaH6nYoLSVhbNNvEI/BNPbfOQ99h2HeuesDWUIg6mo3DlBzZJ27mWyLI7fO4X+bwz3STTLS5tHTtfl8pK2K5G1shwJe/Z+dstF7cd3FVHV4pROkdHV0Bgma4tdNSPs244iGS7dnjkcwUWQhjcLMll0jHTP204LgNBlbw+yjpejaT+NFYp/xOvhmPCCS9NN3BsnNd4OTTimCVFKbTwSR9rmkNPc7onwKQLHBekZPG82Bz4aHwOaS7SNpctpG0qI1112ljaXLaRtKKXVhafDyrCKCr3uZ8i88b22ST68J+sq1VlaKf1vAq6m3vhPLMHgJAB60T/rKtE2/OzuIWNB1C+Pg4+BzHqhS7V1od5dOZJsqGDnTPJs11htcnfqtmTwb3hMmjmj8tfUMgiHOdm5/BjB0nu7B7yQOKmen+PxUsLcLozaGPKokG9795YSN5vm7ts3cCFZgAGIqkz3OOyZqfIcfsmLT/S84hU3ZlSxXbCzcNni8jgXWHcAB1rhphz4qCW3So2MJ63QPfEfcGqPqR1wMmE0rvzVRUxeEgZMP4lTEXXJR42NjcxrdNPI+6U6pYNrFoPoiV3/tPHxIUh1kzbWIyDzWxt/ZDvi4pDqYp74kT5sEh9pY3+JGl023XVB/SuH1Ob/CgVLrQAcT7I0LcVeTwZ6lMtkWW9kWWVdbVlpZFlvZFlLqWWlkWW9kWUupZaWTLpG3oet9yfbJm0kbzWd7vgEenPzAgVA+WUwoQhayyUJ/0EquTr4nemPbG4JgT1oXCH4hTNJs10rWk9jsj7ipnuVX2wm+imWtPEy6Sngv+Di5R4/ST86x7mBntUYqxy9O2X+8h2Ype1n9zJ4AGM+jH1o0kxXyqrmm4PkcW9jBkweDA0LhhNa2KTn3MLwY5QN5jfvI+k0hrx9JjVVxuUWOPZxNG8Z+OqQ2Txhel9ZTDZjqH8nu5F1pIyOrYfdoHdZN9fROhkdG6xLTbaG5w3hzetpBBB6iEnKGCWlFc1rxmLhScaSUU/41h7WOO+ekdyJ7+RdeMn2LYaM00/4piERcd1PUA00nY0ON2PPcQoqtVe4OoQcBb2HEeY8/ayesW0ZqqX8NTyMb+ctdh7pG3afamxLcJ0oq6T8BUyMb+bvtRnvjddp9idRpbTT/AI3h8ZdxqKcmnk7XFmbHnvAXMDToV0TyN7Tb932P3TvqfxAMxAxO6E8T2EcCW88e5rx4qJVmAyNrX0kbC+UTOiawb3WcQD3bIBv1ZqT6P0VH5VBNSYgGvZKx3k1U0wvIDhdolbdjiRcWy3qd6Y1lLg8k1Y1m3iNVzY2notDGta53Y3IE8XEgbrlHYzqdbcs6ecCe8YuXDTTMe1j5KPYpVx6P0fk0Dg7FJ2gzTj+7B6uq1yGjvceAVXOdfv612ra180jpJHl8jyXOed5J/wDN3BcEN78XcmYYtmM8ydT+buCwpNhI5TCqtn5qemmA9MPhJ97fcoypNoXz21sXn0cjgPpQPZKPcHKrdVd5tY8CPUKV6kof63O7qhA+s8H+FMNbLtyvf5z3u+s4n71J9Ug5OKul82Nlj3Nld/JRQNSdY75bB3pykbeqmd/iPK60siy6bKNlZt1q2XOyLLpso2VLqWXOyLLpso2VLqWXOyaNJW/Jt9L7invZTTpK35EemPgUeA/MCDOPllRdCELaWMskWy4oDrZjf1qb6z9BJaGpfKxhNHK4ubIBkwuNzG/zbE5X3i3EFQdWcC02KHFI2Roc1dhVu7Fnys9QXBCpYI2M8U41WMGRsYcwbUbdjbvm5gN2AjraCW36g0cEm8q7EnQoWgqBxGQSnykdRR5QO1JkKYQpiKU8uEcqOtJkKWXLqY0GI0+HxtfFIybEXi4lsTHSg+ZtDnzfS3N4X44wnSoWdDVk1FJIbva595GP/PQvcea8dW524qHoXc9yqGNsQRe+/f8AxbcpFjuDCncHRzMmpn5xTtIzHmvZe8bxxafBNaQoXC1QXAzS5SPV48f0jC09GUSxH/Viewe8hQ+66QVT43B7Hua9pBa9pILSMwQRuKgFjdce3E0t4q5dBo+Twqvcd5uz2RgfxqLWUSg0oq2RujbUyCJ5JezaycTa5IPHIexcxjs4/vD7Gn4hKVMDpcOE6BNU0oic9zv3G/kApjZFlEW6Rzj5wPqtXRuk83Uw+qfuKUNFJyT3xkfNSqyLKMt0rk4sZ+0PvXRulh4xD6xH3KppJeCt8VFxUisiyYW6WDjEfrf8Lo3SuPjG/wBrSqGmlH7fRW+Ji4p6smvSNvyB7HN+NvvWrdKIfNePAfzTpgeDyYxI2GFjxThwM9SRZrGjPZHW88B91yiQU8u0b1d6DUVMTYnEu3KDeSP80oXqT/8Aj6P/AKZiF6HYHivJ/wCqt/pS3F/wEvoO+C8qYt+Gf3oQuz7lTor9yRoQhKrbQhCFFEIQhRRCEIUUQhCFFEIQhRRCEIUUQhCFFEIQhRRCEIUUQhCFFF1pum3vC9Q6EfiEHo/ehCZg1KyOlew3vT6hCE0sBf/Z\" x-natural-width=\"209\" x-natural-height=\"241\" width=\"123.6\" height=\"142\"></image><!--LAYOUT<image image-rendering=\"optimizeQuality\" preserveAspectRatio=\"none\" class=\"s-image\" x-display=\"false\" x-id=\"\" xlink:href=\"data:image/jpeg;base64,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\" x-natural-width=\"209\" x-natural-height=\"241\" width=\"123.6\" height=\"142\" x=\"376\" y=\"177\"></image>LAYOUT--><g class=\"s-text\" stroke-width=\"0\" fill=\"#c00000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" font-size=\"36\" font-family=\"Times New Roman\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"200\" x-height=\"40\" x-left=\"64\" x-top=\"333.1\" x-valign=\"center\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"200\" height=\"40\" x=\"64\" y=\"333.1\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"164\" y=\"360.6\">Ruby</text></g><!--LAYOUT<g class=\"s-text\" stroke-width=\"0\" fill=\"#c00000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"false\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"Times New Roman\" font-size=\"36\" text-anchor=\"middle\" x-valign=\"center\" text-decoration=\"none\" x-width=\"200\" x-height=\"40\" x-left=\"339\" x-top=\"333.1\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"200\" height=\"40\" x=\"339\" y=\"333.1\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"439\" y=\"360.6\">Ruby</text></g>LAYOUT--><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"v_thinreports\",\"display\":\"true\",\"desc\":null,\"multiple\":\"false\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":45,\"y\":376.1,\"width\":236.1,\"height\":19},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"ThinReports\",\"ref-id\":\"\",\"svg\":{\"tag\":\"text\",\"attrs\":{\"x\":163.1,\"y\":388.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"Times New Roman\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-anchor\":\"middle\",\"text-decoration\":\"none\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"ThinReports\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"v_thinreports\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Times New Roman\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"236.1\" x-height=\"19\" x-left=\"45\" x-top=\"376.1\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"236.1\" height=\"19\" x=\"45\" y=\"376.1\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"47\" y=\"387.1\">v_thinreports</text></g>LAYOUT--><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"h_thinreports\",\"display\":\"false\",\"desc\":null,\"multiple\":\"false\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":320,\"y\":376.1,\"width\":236.1,\"height\":19},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"ThinReports\",\"ref-id\":\"\",\"svg\":{\"tag\":\"text\",\"attrs\":{\"x\":438.1,\"y\":388.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"Times New Roman\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"middle\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"ThinReports\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"false\" x-multiple=\"false\" x-id=\"h_thinreports\" x-width=\"236.1\" x-height=\"19\" x-left=\"320\" x-top=\"376.1\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Times New Roman\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"middle\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"236.1\" height=\"19\" x=\"320\" y=\"376.1\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"322\" y=\"387.1\">h_thinreports</text></g>LAYOUT--><!--SHAPE{\"type\":\"s-list\",\"id\":\"List\",\"display\":\"true\",\"desc\":null,\"footer\":{},\"footer-enabled\":\"false\",\"page-footer\":{},\"page-footer-enabled\":\"false\",\"detail\":{\"height\":46,\"svg\":{\"tag\":\"g\",\"content\":\"<g class=\\\"s-text\\\" stroke-width=\\\"0\\\" fill=\\\"#000000\\\" fill-opacity=\\\"1\\\" kerning=\\\"auto\\\" x-display=\\\"true\\\" x-id=\\\"\\\" stroke=\\\"none\\\" font-weight=\\\"normal\\\" font-style=\\\"normal\\\" font-family=\\\"IPAMincho\\\" font-size=\\\"24\\\" text-anchor=\\\"middle\\\" text-decoration=\\\"none\\\" x-width=\\\"200\\\" x-height=\\\"24\\\" x-left=\\\"63\\\" x-top=\\\"516.6\\\"><rect class=\\\"s-text-box\\\" stroke=\\\"none\\\" fill=\\\"#000000\\\" fill-opacity=\\\"0.001\\\" width=\\\"200\\\" height=\\\"24\\\" x=\\\"63\\\" y=\\\"516.6\\\"></rect><text class=\\\"s-text-l0\\\" xml:space=\\\"preserve\\\" stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-opacity=\\\"1\\\" text-decoration=\\\"none\\\" x=\\\"163\\\" y=\\\"537.6\\\">\\u8868\\u793a</text></g><!---LAYOUT<g class=\\\"s-text\\\" stroke-width=\\\"0\\\" fill=\\\"#000000\\\" fill-opacity=\\\"1\\\" kerning=\\\"auto\\\" x-display=\\\"false\\\" x-id=\\\"\\\" stroke=\\\"none\\\" font-weight=\\\"normal\\\" font-style=\\\"normal\\\" font-family=\\\"IPAMincho\\\" font-size=\\\"24\\\" text-anchor=\\\"middle\\\" text-decoration=\\\"none\\\" x-width=\\\"200\\\" x-height=\\\"24\\\" x-left=\\\"338\\\" x-top=\\\"516.6\\\"><rect class=\\\"s-text-box\\\" stroke=\\\"none\\\" fill=\\\"#000000\\\" fill-opacity=\\\"0.001\\\" width=\\\"200\\\" height=\\\"24\\\" x=\\\"338\\\" y=\\\"516.6\\\"></rect><text class=\\\"s-text-l0\\\" xml:space=\\\"preserve\\\" stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-opacity=\\\"1\\\" text-decoration=\\\"none\\\" x=\\\"438\\\" y=\\\"537.6\\\">\\u975e\\u8868\\u793a</text></g>LAYOUT--->\"},\"translate\":{\"x\":0,\"y\":-22.5}},\"header\":{\"height\":51.1,\"svg\":{\"tag\":\"g\",\"content\":\"<g class=\\\"s-text\\\" stroke-width=\\\"0\\\" fill=\\\"#000000\\\" fill-opacity=\\\"1\\\" kerning=\\\"auto\\\" x-display=\\\"true\\\" x-id=\\\"\\\" font-size=\\\"24\\\" font-family=\\\"IPAMincho\\\" font-weight=\\\"normal\\\" font-style=\\\"normal\\\" text-anchor=\\\"middle\\\" text-decoration=\\\"none\\\" x-width=\\\"200\\\" x-height=\\\"24\\\" x-left=\\\"63\\\" x-top=\\\"443\\\"><rect class=\\\"s-text-box\\\" stroke=\\\"none\\\" fill=\\\"#000000\\\" fill-opacity=\\\"0.001\\\" width=\\\"200\\\" height=\\\"24\\\" x=\\\"63\\\" y=\\\"443\\\"></rect><text class=\\\"s-text-l0\\\" xml:space=\\\"preserve\\\" stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-opacity=\\\"1\\\" text-decoration=\\\"none\\\" x=\\\"163\\\" y=\\\"464\\\">\\u8868\\u793a</text></g><!---LAYOUT<g class=\\\"s-text\\\" stroke-width=\\\"0\\\" fill=\\\"#000000\\\" fill-opacity=\\\"1\\\" kerning=\\\"auto\\\" x-display=\\\"false\\\" x-id=\\\"\\\" stroke=\\\"none\\\" font-weight=\\\"normal\\\" font-style=\\\"normal\\\" font-family=\\\"IPAMincho\\\" font-size=\\\"24\\\" text-anchor=\\\"middle\\\" text-decoration=\\\"none\\\" x-width=\\\"200\\\" x-height=\\\"24\\\" x-left=\\\"338\\\" x-top=\\\"443\\\"><rect class=\\\"s-text-box\\\" stroke=\\\"none\\\" fill=\\\"#000000\\\" fill-opacity=\\\"0.001\\\" width=\\\"200\\\" height=\\\"24\\\" x=\\\"338\\\" y=\\\"443\\\"></rect><text class=\\\"s-text-l0\\\" xml:space=\\\"preserve\\\" stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-opacity=\\\"1\\\" text-decoration=\\\"none\\\" x=\\\"438\\\" y=\\\"464\\\">\\u975e\\u8868\\u793a</text></g>LAYOUT--->\"},\"translate\":{\"x\":0,\"y\":0}},\"header-enabled\":\"true\",\"svg\":{\"tag\":\"g\",\"attrs\":{}},\"content-height\":255.00000000000003,\"page-break\":\"true\"}SHAPE--><!--LAYOUT<g class=\"s-list\" x-id=\"List\" x-header-enabled=\"true\" x-page-footer-enabled=\"false\" x-footer-enabled=\"false\" x-changing-page=\"true\" x-display=\"true\" width=\"555.2\" height=\"306.1\" x=\"20\" y=\"430.1\"><g class=\"s-list-header\" transform=\"translate(0,0) rotate(0 0 0)\" x-top=\"430.1\" x-height=\"51.1\"><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" font-size=\"24\" font-family=\"IPAMincho\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"200\" x-height=\"24\" x-left=\"63\" x-top=\"443\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"200\" height=\"24\" x=\"63\" y=\"443\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"163\" y=\"464\">\u8868\u793a</text></g><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"false\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"IPAMincho\" font-size=\"24\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"200\" x-height=\"24\" x-left=\"338\" x-top=\"443\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"200\" height=\"24\" x=\"338\" y=\"443\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"438\" y=\"464\">\u975e\u8868\u793a</text></g></g><g class=\"s-list-detail\" transform=\"translate(0,-22.5) rotate(0 0 0)\" x-top=\"481.2\" x-height=\"46\"><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"IPAMincho\" font-size=\"24\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"200\" x-height=\"24\" x-left=\"63\" x-top=\"516.6\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"200\" height=\"24\" x=\"63\" y=\"516.6\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"163\" y=\"537.6\">\u8868\u793a</text></g><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"false\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"IPAMincho\" font-size=\"24\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"200\" x-height=\"24\" x-left=\"338\" x-top=\"516.6\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"200\" height=\"24\" x=\"338\" y=\"516.6\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"438\" y=\"537.6\">\u975e\u8868\u793a</text></g></g><g class=\"s-list-page-footer\" transform=\"translate(0,-50.1) rotate(0 0 0)\" x-top=\"527.2\" x-height=\"0\" display=\"none\"></g><g class=\"s-list-footer\" transform=\"translate(0,-105.3) rotate(0 0 0)\" x-top=\"527.2\" x-height=\"0\" display=\"none\"></g><text class=\"s-list-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"440.9\">List</text><rect stroke-dasharray=\"5\" stroke=\"#BBBBBB\" stroke-width=\"1\" fill=\"#FFFFFF\" fill-opacity=\"0\" class=\"s-list-face\" width=\"555.2\" height=\"306.1\" x=\"20\" y=\"430.1\"></rect></g>LAYOUT--></g></svg>"}
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+
3
+ CaseRunner.current :list_events
4
+
5
+ ThinReports::Report.generate_file(CaseRunner.output_file) do
6
+ use_layout(CaseRunner.layout_file) do |config|
7
+ config.list(:details) do
8
+ events.on :page_footer_insert do |e|
9
+ e.section.item(:event_name).value(':page_footer_insert')
10
+ end
11
+ events.on :footer_insert do |e|
12
+ e.section.item(:event_name).value(':footer_insert')
13
+ end
14
+ events.on :page_finalize do |e|
15
+ e.list.header.item(:event_name).value(':page_finalize')
16
+ e.page.item(:event_name).value(':page_finalize')
17
+ end
18
+ end
19
+ end
20
+
21
+ start_new_page
22
+
23
+ 2.times do |t|
24
+ page.list(:details).add_row :row_name => t + 1
25
+ end
26
+
27
+ start_new_page
28
+
29
+ 8.times do |t|
30
+ page.list(:details).add_row :row_name => t + 1
31
+ end
32
+ end
@@ -0,0 +1 @@
1
+ {"version":"0.7.0","finger-print":-409445868,"config":{"title":"List Events","option":{},"page":{"paper-type":"A4","orientation":"portrait","margin-top":"20","margin-bottom":"20","margin-left":"20","margin-right":"20"}},"svg":"<svg width=\"595.2\" height=\"841.8\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"none\" viewBox=\"0 0 595.2 841.8\"><g class=\"canvas\"><!--SHAPE{\"type\":\"s-list\",\"id\":\"details\",\"display\":\"true\",\"desc\":null,\"footer\":{\"height\":50,\"svg\":{\"tag\":\"g\",\"content\":\"<line stroke=\\\"#000000\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" class=\\\"s-line\\\" x-display=\\\"true\\\" x-stroke-type=\\\"solid\\\" stroke-dasharray=\\\"none\\\" x-id=\\\"\\\" x2=\\\"575.2\\\" y1=\\\"421.5\\\" y2=\\\"421.5\\\" x1=\\\"20\\\"></line><!---SHAPE{\\\"type\\\":\\\"s-tblock\\\",\\\"id\\\":\\\"event_name\\\",\\\"display\\\":\\\"true\\\",\\\"desc\\\":null,\\\"multiple\\\":\\\"false\\\",\\\"valign\\\":\\\"\\\",\\\"line-height\\\":\\\"\\\",\\\"box\\\":{\\\"x\\\":181.1,\\\"y\\\":387.5,\\\"width\\\":251.3,\\\"height\\\":18},\\\"format\\\":{\\\"base\\\":\\\"{value} event.\\\",\\\"type\\\":\\\"\\\"},\\\"value\\\":\\\"\\\",\\\"ref-id\\\":\\\"\\\",\\\"svg\\\":{\\\"tag\\\":\\\"text\\\",\\\"attrs\\\":{\\\"x\\\":181.1,\\\"y\\\":400.5,\\\"xml:space\\\":\\\"preserve\\\",\\\"kerning\\\":\\\"auto\\\",\\\"fill\\\":\\\"#000000\\\",\\\"fill-opacity\\\":\\\"1\\\",\\\"font-size\\\":\\\"18\\\",\\\"font-family\\\":\\\"Helvetica\\\",\\\"font-weight\\\":\\\"normal\\\",\\\"font-style\\\":\\\"normal\\\",\\\"text-decoration\\\":\\\"none\\\",\\\"text-anchor\\\":\\\"start\\\"}}}SHAPE---><g class=\\\"s-text\\\" stroke-width=\\\"0\\\" fill=\\\"#000000\\\" fill-opacity=\\\"1\\\" kerning=\\\"auto\\\" x-display=\\\"true\\\" x-id=\\\"\\\" stroke=\\\"none\\\" font-weight=\\\"normal\\\" font-style=\\\"normal\\\" font-family=\\\"Helvetica\\\" font-size=\\\"18\\\" text-anchor=\\\"middle\\\" text-decoration=\\\"none\\\" x-width=\\\"27.5\\\" x-height=\\\"20\\\" x-left=\\\"153.6\\\" x-top=\\\"386.5\\\"><rect class=\\\"s-text-box\\\" stroke=\\\"none\\\" fill=\\\"#000000\\\" fill-opacity=\\\"0.001\\\" width=\\\"27.5\\\" height=\\\"20\\\" x=\\\"153.6\\\" y=\\\"386.5\\\"></rect><text class=\\\"s-text-l0\\\" xml:space=\\\"preserve\\\" stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-opacity=\\\"1\\\" text-decoration=\\\"none\\\" x=\\\"167.4\\\" y=\\\"399.5\\\">By </text></g>\"},\"translate\":{\"x\":0,\"y\":-218.5}},\"footer-enabled\":\"true\",\"page-footer\":{\"height\":50,\"svg\":{\"tag\":\"g\",\"content\":\"<!---SHAPE{\\\"type\\\":\\\"s-tblock\\\",\\\"id\\\":\\\"event_name\\\",\\\"display\\\":\\\"true\\\",\\\"desc\\\":null,\\\"multiple\\\":\\\"false\\\",\\\"valign\\\":\\\"\\\",\\\"line-height\\\":\\\"\\\",\\\"box\\\":{\\\"x\\\":181.1,\\\"y\\\":330.9,\\\"width\\\":251.3,\\\"height\\\":18},\\\"format\\\":{\\\"base\\\":\\\"{value} event.\\\",\\\"type\\\":\\\"\\\"},\\\"value\\\":\\\"\\\",\\\"ref-id\\\":\\\"\\\",\\\"svg\\\":{\\\"tag\\\":\\\"text\\\",\\\"attrs\\\":{\\\"x\\\":181.1,\\\"y\\\":343.9,\\\"xml:space\\\":\\\"preserve\\\",\\\"kerning\\\":\\\"auto\\\",\\\"fill\\\":\\\"#000000\\\",\\\"fill-opacity\\\":\\\"1\\\",\\\"font-size\\\":\\\"18\\\",\\\"font-family\\\":\\\"Helvetica\\\",\\\"font-weight\\\":\\\"normal\\\",\\\"font-style\\\":\\\"normal\\\",\\\"text-anchor\\\":\\\"start\\\",\\\"text-decoration\\\":\\\"none\\\"}}}SHAPE---><line stroke=\\\"#000000\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" class=\\\"s-line\\\" x-display=\\\"true\\\" x-stroke-type=\\\"solid\\\" stroke-dasharray=\\\"none\\\" x-id=\\\"\\\" x2=\\\"575.2\\\" y1=\\\"364.9\\\" y2=\\\"364.9\\\" x1=\\\"20\\\"></line><g class=\\\"s-text\\\" stroke-width=\\\"0\\\" fill=\\\"#000000\\\" fill-opacity=\\\"1\\\" kerning=\\\"auto\\\" x-display=\\\"true\\\" x-id=\\\"\\\" font-size=\\\"18\\\" font-family=\\\"Helvetica\\\" font-weight=\\\"normal\\\" font-style=\\\"normal\\\" text-anchor=\\\"middle\\\" text-decoration=\\\"none\\\" x-width=\\\"27.5\\\" x-height=\\\"20\\\" x-left=\\\"153.6\\\" x-top=\\\"329.9\\\"><rect class=\\\"s-text-box\\\" stroke=\\\"none\\\" fill=\\\"#000000\\\" fill-opacity=\\\"0.001\\\" width=\\\"27.5\\\" height=\\\"20\\\" x=\\\"153.6\\\" y=\\\"329.9\\\"></rect><text class=\\\"s-text-l0\\\" xml:space=\\\"preserve\\\" stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-opacity=\\\"1\\\" text-decoration=\\\"none\\\" x=\\\"167.4\\\" y=\\\"342.9\\\">By </text></g>\"},\"translate\":{\"x\":0,\"y\":-161.9}},\"page-footer-enabled\":\"true\",\"detail\":{\"height\":50,\"svg\":{\"tag\":\"g\",\"content\":\"<!---SHAPE{\\\"type\\\":\\\"s-tblock\\\",\\\"id\\\":\\\"row_name\\\",\\\"display\\\":\\\"true\\\",\\\"desc\\\":null,\\\"multiple\\\":\\\"false\\\",\\\"valign\\\":\\\"\\\",\\\"line-height\\\":\\\"\\\",\\\"box\\\":{\\\"x\\\":37,\\\"y\\\":255.5,\\\"width\\\":521.2,\\\"height\\\":18},\\\"format\\\":{\\\"base\\\":\\\"List Detail #{value}\\\",\\\"type\\\":\\\"\\\"},\\\"value\\\":\\\"\\\",\\\"ref-id\\\":\\\"\\\",\\\"svg\\\":{\\\"tag\\\":\\\"text\\\",\\\"attrs\\\":{\\\"x\\\":297.6,\\\"y\\\":268.5,\\\"xml:space\\\":\\\"preserve\\\",\\\"kerning\\\":\\\"auto\\\",\\\"fill\\\":\\\"#000000\\\",\\\"fill-opacity\\\":\\\"1\\\",\\\"font-size\\\":\\\"18\\\",\\\"font-family\\\":\\\"Helvetica\\\",\\\"font-weight\\\":\\\"normal\\\",\\\"font-style\\\":\\\"normal\\\",\\\"text-decoration\\\":\\\"none\\\",\\\"text-anchor\\\":\\\"middle\\\"}}}SHAPE---><line stroke=\\\"#000000\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" class=\\\"s-line\\\" x-display=\\\"true\\\" x-stroke-type=\\\"solid\\\" stroke-dasharray=\\\"none\\\" x-id=\\\"\\\" x2=\\\"575.2\\\" y1=\\\"289.5\\\" y2=\\\"289.5\\\" x1=\\\"20\\\"></line>\"},\"translate\":{\"x\":0,\"y\":-86.5}},\"header\":{\"height\":50,\"svg\":{\"tag\":\"g\",\"content\":\"<line stroke=\\\"#000000\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" class=\\\"s-line\\\" x-display=\\\"true\\\" x-stroke-type=\\\"solid\\\" stroke-dasharray=\\\"none\\\" x-id=\\\"\\\" x1=\\\"20\\\" x2=\\\"575.2\\\" y1=\\\"214.1\\\" y2=\\\"214.1\\\"></line><!---SHAPE{\\\"type\\\":\\\"s-tblock\\\",\\\"id\\\":\\\"event_name\\\",\\\"display\\\":\\\"true\\\",\\\"desc\\\":null,\\\"multiple\\\":\\\"false\\\",\\\"valign\\\":\\\"\\\",\\\"line-height\\\":\\\"\\\",\\\"box\\\":{\\\"x\\\":181.1,\\\"y\\\":180.1,\\\"width\\\":251.3,\\\"height\\\":18},\\\"format\\\":{\\\"base\\\":\\\"{value} event.\\\",\\\"type\\\":\\\"\\\"},\\\"value\\\":\\\"\\\",\\\"ref-id\\\":\\\"\\\",\\\"svg\\\":{\\\"tag\\\":\\\"text\\\",\\\"attrs\\\":{\\\"x\\\":181.1,\\\"y\\\":193.1,\\\"xml:space\\\":\\\"preserve\\\",\\\"kerning\\\":\\\"auto\\\",\\\"fill\\\":\\\"#000000\\\",\\\"fill-opacity\\\":\\\"1\\\",\\\"font-size\\\":\\\"18\\\",\\\"font-family\\\":\\\"Helvetica\\\",\\\"font-weight\\\":\\\"normal\\\",\\\"font-style\\\":\\\"normal\\\",\\\"text-decoration\\\":\\\"none\\\",\\\"text-anchor\\\":\\\"start\\\"}}}SHAPE---><g class=\\\"s-text\\\" stroke-width=\\\"0\\\" fill=\\\"#000000\\\" fill-opacity=\\\"1\\\" kerning=\\\"auto\\\" x-display=\\\"true\\\" x-id=\\\"\\\" stroke=\\\"none\\\" font-weight=\\\"normal\\\" font-style=\\\"normal\\\" font-family=\\\"Helvetica\\\" font-size=\\\"18\\\" text-anchor=\\\"middle\\\" text-decoration=\\\"none\\\" x-width=\\\"27.5\\\" x-height=\\\"20\\\" x-left=\\\"153.6\\\" x-top=\\\"179.1\\\"><rect class=\\\"s-text-box\\\" stroke=\\\"none\\\" fill=\\\"#000000\\\" fill-opacity=\\\"0.001\\\" width=\\\"27.5\\\" height=\\\"20\\\" x=\\\"153.6\\\" y=\\\"179.1\\\"></rect><text class=\\\"s-text-l0\\\" xml:space=\\\"preserve\\\" stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-opacity=\\\"1\\\" text-decoration=\\\"none\\\" x=\\\"167.4\\\" y=\\\"192.1\\\">By </text></g>\"},\"translate\":{\"x\":0,\"y\":-61.1}},\"header-enabled\":\"true\",\"svg\":{\"tag\":\"g\",\"attrs\":{}},\"content-height\":250,\"page-break\":\"true\"}SHAPE--><!--LAYOUT<g class=\"s-list\" x-id=\"details\" x-header-enabled=\"true\" x-page-footer-enabled=\"true\" x-footer-enabled=\"true\" x-changing-page=\"true\" x-display=\"true\" width=\"555.2\" height=\"300\" x=\"20\" y=\"103\"><g class=\"s-list-header\" transform=\"translate(0,-61.1) rotate(0 0 0)\" x-top=\"103\" x-height=\"50\"><line stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x1=\"20\" x2=\"575.2\" y1=\"214.1\" y2=\"214.1\"></line><g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"{value} event.\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"event_name\" x-width=\"251.3\" x-height=\"18\" x-left=\"181.1\" x-top=\"180.1\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"251.3\" height=\"18\" x=\"181.1\" y=\"180.1\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"183.1\" y=\"191.1\">event_name</text></g><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"Helvetica\" font-size=\"18\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"27.5\" x-height=\"20\" x-left=\"153.6\" x-top=\"179.1\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"27.5\" height=\"20\" x=\"153.6\" y=\"179.1\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"167.4\" y=\"192.1\">By </text></g></g><g class=\"s-list-detail\" transform=\"translate(0,-86.5) rotate(0 0 0)\" x-top=\"153\" x-height=\"50\"><g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"List Detail #{value}\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"row_name\" x-width=\"521.2\" x-height=\"18\" x-left=\"37\" x-top=\"255.5\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"middle\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"521.2\" height=\"18\" x=\"37\" y=\"255.5\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"39\" y=\"266.5\">row_name</text></g><line stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"575.2\" y1=\"289.5\" y2=\"289.5\" x1=\"20\"></line></g><g class=\"s-list-page-footer\" transform=\"translate(0,-111.9) rotate(0 0 0)\" x-top=\"203\" x-height=\"50\"><g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"{value} event.\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"event_name\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"251.3\" x-height=\"18\" x-left=\"181.1\" x-top=\"330.9\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"251.3\" height=\"18\" x=\"181.1\" y=\"330.9\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"183.1\" y=\"341.9\">event_name</text></g><line stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"575.2\" y1=\"364.9\" y2=\"364.9\" x1=\"20\"></line><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" font-size=\"18\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"27.5\" x-height=\"20\" x-left=\"153.6\" x-top=\"329.9\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"27.5\" height=\"20\" x=\"153.6\" y=\"329.9\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"167.4\" y=\"342.9\">By </text></g></g><g class=\"s-list-footer\" transform=\"translate(0,-118.5) rotate(0 0 0)\" x-top=\"253\" x-height=\"50\"><line stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"575.2\" y1=\"421.5\" y2=\"421.5\" x1=\"20\"></line><g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"{value} event.\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"event_name\" x-width=\"251.3\" x-height=\"18\" x-left=\"181.1\" x-top=\"387.5\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"251.3\" height=\"18\" x=\"181.1\" y=\"387.5\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"183.1\" y=\"398.5\">event_name</text></g><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"Helvetica\" font-size=\"18\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"27.5\" x-height=\"20\" x-left=\"153.6\" x-top=\"386.5\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"27.5\" height=\"20\" x=\"153.6\" y=\"386.5\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"167.4\" y=\"399.5\">By </text></g></g><text class=\"s-list-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"113.8\">details</text><rect stroke-dasharray=\"5\" stroke=\"#BBBBBB\" stroke-width=\"1\" fill=\"#FFFFFF\" fill-opacity=\"0\" class=\"s-list-face\" width=\"555.2\" height=\"300\" x=\"20\" y=\"103\"></rect></g>LAYOUT--><rect stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"518.2\" height=\"75\" x=\"38.5\" y=\"427.2\"></rect><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" font-size=\"26\" font-family=\"Times New Roman\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"315.1\" x-height=\"48\" x-left=\"140.1\" x-top=\"32\" x-valign=\"center\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"315.1\" height=\"48\" x=\"140.1\" y=\"32\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"297.7\" y=\"61\">List Events</text></g><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"event_name\",\"display\":\"true\",\"desc\":null,\"multiple\":\"false\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":184.5,\"y\":456.2,\"width\":251.3,\"height\":18},\"format\":{\"base\":\"{value} event.\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"text\",\"attrs\":{\"x\":184.5,\"y\":469.2,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"Helvetica\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"start\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"{value} event.\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"event_name\" x-width=\"251.3\" x-height=\"18\" x-left=\"184.5\" x-top=\"456.2\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"251.3\" height=\"18\" x=\"184.5\" y=\"456.2\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"186.5\" y=\"467.2\">event_name</text></g>LAYOUT--><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"Helvetica\" font-size=\"18\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"27.5\" x-height=\"20\" x-left=\"157\" x-top=\"455.2\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"27.5\" height=\"20\" x=\"157\" y=\"455.2\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"170.8\" y=\"468.2\">By </text></g></g></svg>"}
@@ -0,0 +1,19 @@
1
+ # coding: utf-8
2
+
3
+ CaseRunner.current :list_header_inheriting
4
+
5
+ ThinReports::Report.generate_file(:pdf, CaseRunner.output_file) do
6
+ use_layout(CaseRunner.layout_file)
7
+
8
+ 3.times do |t|
9
+ start_new_page
10
+
11
+ page.list(:list).header do |section|
12
+ section.item(:header).value("Header##{t}")
13
+ end
14
+
15
+ ((t + 1) * 3).times do
16
+ page.list(:list).add_row
17
+ end
18
+ end
19
+ end
@@ -0,0 +1 @@
1
+ {"version":"0.6.0.pre3","finger-print":298993480,"config":{"title":"List Header","option":{},"page":{"paper-type":"A4","orientation":"portrait","margin-top":"20","margin-bottom":"20","margin-left":"20","margin-right":"20"}},"svg":"<svg width=\"595.2\" height=\"841.8\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"none\" viewBox=\"0 0 595.2 841.8\"><g class=\"canvas\"><!--SHAPE{\"type\":\"s-list\",\"id\":\"list\",\"display\":\"true\",\"desc\":null,\"footer\":{},\"footer-enabled\":\"false\",\"page-footer\":{},\"page-footer-enabled\":\"false\",\"detail\":{\"height\":39,\"svg\":{\"tag\":\"g\",\"content\":\"<g class=\\\"s-text\\\" stroke-width=\\\"0\\\" fill=\\\"#000000\\\" fill-opacity=\\\"1\\\" kerning=\\\"auto\\\" x-display=\\\"true\\\" x-id=\\\"\\\" font-size=\\\"18\\\" font-family=\\\"Times New Roman\\\" font-weight=\\\"normal\\\" font-style=\\\"normal\\\" text-anchor=\\\"middle\\\" text-decoration=\\\"none\\\" x-width=\\\"200\\\" x-height=\\\"19\\\" x-left=\\\"197.6\\\" x-top=\\\"102.4\\\" x-valign=\\\"center\\\"><rect class=\\\"s-text-box\\\" stroke=\\\"none\\\" fill=\\\"#000000\\\" fill-opacity=\\\"0.001\\\" width=\\\"200\\\" height=\\\"19\\\" x=\\\"197.6\\\" y=\\\"102.4\\\"></rect><text class=\\\"s-text-l0\\\" xml:space=\\\"preserve\\\" stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-opacity=\\\"1\\\" text-decoration=\\\"none\\\" x=\\\"297.6\\\" y=\\\"115.4\\\">Detail</text></g>\"},\"translate\":{\"x\":0,\"y\":-26.4}},\"header\":{\"height\":45,\"svg\":{\"tag\":\"g\",\"content\":\"<!---SHAPE{\\\"type\\\":\\\"s-tblock\\\",\\\"id\\\":\\\"header\\\",\\\"display\\\":\\\"true\\\",\\\"desc\\\":null,\\\"multiple\\\":\\\"false\\\",\\\"valign\\\":\\\"\\\",\\\"line-height\\\":\\\"\\\",\\\"box\\\":{\\\"x\\\":236.1,\\\"y\\\":33,\\\"width\\\":123,\\\"height\\\":19},\\\"format\\\":{\\\"base\\\":\\\"\\\",\\\"type\\\":\\\"\\\"},\\\"value\\\":\\\"\\\",\\\"ref-id\\\":\\\"\\\",\\\"svg\\\":{\\\"tag\\\":\\\"text\\\",\\\"attrs\\\":{\\\"x\\\":297.6,\\\"y\\\":45,\\\"xml:space\\\":\\\"preserve\\\",\\\"fill\\\":\\\"#000000\\\",\\\"fill-opacity\\\":\\\"1\\\",\\\"font-size\\\":\\\"18\\\",\\\"font-family\\\":\\\"Times New Roman\\\",\\\"font-weight\\\":\\\"normal\\\",\\\"font-style\\\":\\\"normal\\\",\\\"text-anchor\\\":\\\"middle\\\",\\\"text-decoration\\\":\\\"none\\\",\\\"kerning\\\":\\\"null\\\"}}}SHAPE--->\"},\"translate\":{\"x\":0,\"y\":1}},\"header-enabled\":\"true\",\"svg\":{\"tag\":\"g\",\"attrs\":{}},\"content-height\":188.1,\"page-break\":\"true\"}SHAPE--><!--LAYOUT<g class=\"s-list\" x-id=\"list\" x-header-enabled=\"true\" x-page-footer-enabled=\"false\" x-footer-enabled=\"false\" x-changing-page=\"true\" x-display=\"true\" width=\"555.2\" height=\"233.1\" x=\"20\" y=\"21\"><g class=\"s-list-header\" transform=\"translate(0,1) rotate(0 0 0)\" x-top=\"21\" x-height=\"45\"><g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" x-display=\"true\" x-multiple=\"false\" x-id=\"header\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Times New Roman\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"123\" x-height=\"19\" x-left=\"236.1\" x-top=\"33\" kerning=\"null\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"123\" height=\"19\" x=\"236.1\" y=\"33\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"238.1\" y=\"44\">header</text></g></g><g class=\"s-list-detail\" transform=\"translate(0,-26.4) rotate(0 0 0)\" x-top=\"66\" x-height=\"39\"><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" font-size=\"18\" font-family=\"Times New Roman\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"200\" x-height=\"19\" x-left=\"197.6\" x-top=\"102.4\" x-valign=\"center\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"200\" height=\"19\" x=\"197.6\" y=\"102.4\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"297.6\" y=\"115.4\">Detail</text></g></g><g class=\"s-list-page-footer\" transform=\"translate(0,-59.8) rotate(0 0 0)\" x-top=\"105\" x-height=\"0\" display=\"none\"></g><g class=\"s-list-footer\" transform=\"translate(0,-114.1) rotate(0 0 0)\" x-top=\"105\" x-height=\"0\" display=\"none\"></g><text class=\"s-list-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"31.8\">list</text><rect stroke-dasharray=\"5\" stroke=\"#BBBBBB\" stroke-width=\"1\" fill=\"#FFFFFF\" fill-opacity=\"0\" class=\"s-list-face\" width=\"555.2\" height=\"233.1\" x=\"20\" y=\"21\"></rect></g>LAYOUT--></g></svg>"}
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+
3
+ CaseRunner.current :list_manual_generation
4
+
5
+ ThinReports::Report.generate_file(:pdf, CaseRunner.output_file) do
6
+ use_layout(CaseRunner.layout_file)
7
+
8
+ start_new_page
9
+
10
+ page.list(:list).header do |h|
11
+ h.item(:header).value(page.no)
12
+ end
13
+
14
+ 25.times do |t|
15
+ if page.list(:list).overflow?
16
+ start_new_page
17
+ page.list(:list).header :header => page.no
18
+ end
19
+
20
+ page.list(:list).page_break if t == 15
21
+
22
+ page.list(:list).add_row :detail => t
23
+ end
24
+ end
@@ -0,0 +1 @@
1
+ {"version":"0.6.0.pre3","finger-print":-1006854256,"config":{"title":"List Manual Generation","option":{},"page":{"paper-type":"A4","orientation":"portrait","margin-top":"20","margin-bottom":"20","margin-left":"20","margin-right":"20"}},"svg":"<svg width=\"595.2\" height=\"841.8\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"none\" viewBox=\"0 0 595.2 841.8\"><g class=\"canvas\"><!--SHAPE{\"type\":\"s-list\",\"id\":\"list\",\"display\":\"true\",\"desc\":null,\"footer\":{},\"footer-enabled\":\"false\",\"page-footer\":{},\"page-footer-enabled\":\"false\",\"detail\":{\"height\":57.7,\"svg\":{\"tag\":\"g\",\"content\":\"<!---SHAPE{\\\"type\\\":\\\"s-tblock\\\",\\\"id\\\":\\\"detail\\\",\\\"display\\\":\\\"true\\\",\\\"desc\\\":null,\\\"multiple\\\":\\\"false\\\",\\\"valign\\\":\\\"\\\",\\\"line-height\\\":\\\"\\\",\\\"box\\\":{\\\"x\\\":211.4,\\\"y\\\":124.5,\\\"width\\\":172.5,\\\"height\\\":36},\\\"format\\\":{\\\"base\\\":\\\"Detail#{value}\\\",\\\"type\\\":\\\"\\\"},\\\"value\\\":\\\"\\\",\\\"ref-id\\\":\\\"\\\",\\\"svg\\\":{\\\"tag\\\":\\\"text\\\",\\\"attrs\\\":{\\\"x\\\":297.7,\\\"y\\\":155.5,\\\"xml:space\\\":\\\"preserve\\\",\\\"kerning\\\":\\\"auto\\\",\\\"fill\\\":\\\"#000000\\\",\\\"fill-opacity\\\":\\\"1\\\",\\\"font-size\\\":\\\"36\\\",\\\"font-family\\\":\\\"Helvetica\\\",\\\"font-weight\\\":\\\"normal\\\",\\\"font-style\\\":\\\"normal\\\",\\\"text-anchor\\\":\\\"middle\\\",\\\"text-decoration\\\":\\\"none\\\"}}}SHAPE--->\"},\"translate\":{\"x\":0,\"y\":-46.3}},\"header\":{\"height\":46.3,\"svg\":{\"tag\":\"g\",\"content\":\"<!---SHAPE{\\\"type\\\":\\\"s-tblock\\\",\\\"id\\\":\\\"header\\\",\\\"display\\\":\\\"true\\\",\\\"desc\\\":null,\\\"multiple\\\":\\\"false\\\",\\\"valign\\\":\\\"\\\",\\\"line-height\\\":\\\"\\\",\\\"box\\\":{\\\"x\\\":160.6,\\\"y\\\":62.2,\\\"width\\\":274.1,\\\"height\\\":36},\\\"format\\\":{\\\"base\\\":\\\"Header#{value}\\\",\\\"type\\\":\\\"\\\"},\\\"value\\\":\\\"\\\",\\\"ref-id\\\":\\\"\\\",\\\"svg\\\":{\\\"tag\\\":\\\"text\\\",\\\"attrs\\\":{\\\"x\\\":297.7,\\\"y\\\":93.2,\\\"xml:space\\\":\\\"preserve\\\",\\\"kerning\\\":\\\"auto\\\",\\\"fill\\\":\\\"#000000\\\",\\\"fill-opacity\\\":\\\"1\\\",\\\"font-size\\\":\\\"36\\\",\\\"font-family\\\":\\\"Helvetica\\\",\\\"font-weight\\\":\\\"normal\\\",\\\"font-style\\\":\\\"normal\\\",\\\"text-decoration\\\":\\\"none\\\",\\\"text-anchor\\\":\\\"middle\\\"}}}SHAPE--->\"},\"translate\":{\"x\":0,\"y\":-36}},\"header-enabled\":\"true\",\"svg\":{\"tag\":\"g\",\"attrs\":{}},\"content-height\":273.8,\"page-break\":\"false\"}SHAPE--><!--LAYOUT<g class=\"s-list\" x-id=\"list\" x-header-enabled=\"true\" x-page-footer-enabled=\"false\" x-footer-enabled=\"false\" x-changing-page=\"false\" x-display=\"true\" width=\"555.2\" height=\"320.1\" x=\"20\" y=\"21\"><g class=\"s-list-header\" transform=\"translate(0,-36) rotate(0 0 0)\" x-top=\"21\" x-height=\"46.3\"><g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"Header#{value}\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"header\" x-width=\"274.1\" x-height=\"36\" x-left=\"160.6\" x-top=\"62.2\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"36\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"middle\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"274.1\" height=\"36\" x=\"160.6\" y=\"62.2\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"162.6\" y=\"73.2\">header</text></g></g><g class=\"s-list-detail\" transform=\"translate(0,-46.3) rotate(0 0 0)\" x-top=\"67.3\" x-height=\"57.7\"><g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"Detail#{value}\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"detail\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"36\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"172.5\" x-height=\"36\" x-left=\"211.4\" x-top=\"124.5\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"172.5\" height=\"36\" x=\"211.4\" y=\"124.5\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"213.4\" y=\"135.5\">detail</text></g></g><g class=\"s-list-page-footer\" transform=\"translate(0,-45.2) rotate(0 0 0)\" x-top=\"125\" x-height=\"0\" display=\"none\"></g><g class=\"s-list-footer\" transform=\"translate(0,-87.7) rotate(0 0 0)\" x-top=\"125\" x-height=\"0\" display=\"none\"></g><text class=\"s-list-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"31.8\">list</text><rect stroke-dasharray=\"5\" stroke=\"#BBBBBB\" stroke-width=\"1\" fill=\"#FFFFFF\" fill-opacity=\"0\" class=\"s-list-face\" width=\"555.2\" height=\"320.1\" x=\"20\" y=\"21\"></rect></g>LAYOUT--></g></svg>"}
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+
3
+ CaseRunner.current :single_line_tblock
4
+
5
+ ThinReports::Report.generate_file(CaseRunner.output_file) do
6
+ use_layout(CaseRunner.layout_file)
7
+
8
+ start_new_page
9
+
10
+ # When Japanese is set to the Tblock to which the Helvetica font is set.
11
+ page.item(:fallback_to_ipafont).value('IPA明朝に自動的にフォールバックされる')
12
+
13
+ # When multi-line text is set.
14
+ page.item(:set_multiline_text).value("1行目\n2行目\n3行目\n4行目\n5行目")
15
+ end
@@ -0,0 +1 @@
1
+ {"version":"0.6.0.pre3","finger-print":-140430337,"config":{"title":"Single Line Tblock","option":{},"page":{"paper-type":"A4","orientation":"portrait","margin-top":"20","margin-bottom":"20","margin-left":"20","margin-right":"20"}},"svg":"<svg width=\"595.2\" height=\"841.8\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"none\" viewBox=\"0 0 595.2 841.8\"><g class=\"canvas\"><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"fallback_to_ipafont\",\"display\":\"true\",\"desc\":null,\"multiple\":\"false\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":37,\"y\":102,\"width\":291.1,\"height\":26},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"text\",\"attrs\":{\"x\":37,\"y\":123,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#ff0000\",\"fill-opacity\":\"1\",\"font-size\":\"24\",\"font-family\":\"Helvetica\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-anchor\":\"start\",\"text-decoration\":\"none\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"fallback_to_ipafont\" fill=\"#ff0000\" fill-opacity=\"1\" font-size=\"24\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"291.1\" x-height=\"26\" x-left=\"37\" x-top=\"102\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"291.1\" height=\"26\" x=\"37\" y=\"102\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"39\" y=\"113\">fallback_to_ipafont</text></g>LAYOUT--><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" font-size=\"16\" font-family=\"IPAMincho\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"488\" x-height=\"36\" x-left=\"38\" x-top=\"51\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"488\" height=\"36\" x=\"38\" y=\"51\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"38\" y=\"65\">Helvetica\u30d5\u30a9\u30f3\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308bTblock\u306b\u65e5\u672c\u8a9e\u3092\u30bb\u30c3\u30c8\u3059\u308b\u3002</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"38\" y=\"81\">\u6ea2\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u306f\u8868\u793a\u3055\u308c\u306a\u3044\u3002</text></g><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"set_multiline_text\",\"display\":\"true\",\"desc\":null,\"multiple\":\"false\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":37,\"y\":178,\"width\":291.1,\"height\":24},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"text\",\"attrs\":{\"x\":37,\"y\":199,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#ff0000\",\"fill-opacity\":\"1\",\"font-size\":\"24\",\"font-family\":\"IPAMincho\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"start\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"false\" x-id=\"set_multiline_text\" x-width=\"291.1\" x-height=\"24\" x-left=\"37\" x-top=\"178\" fill=\"#ff0000\" fill-opacity=\"1\" font-size=\"24\" font-family=\"IPAMincho\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"291.1\" height=\"24\" x=\"37\" y=\"178\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"39\" y=\"189\">set_multiline_text</text></g>LAYOUT--><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"IPAMincho\" font-size=\"16\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"208\" x-height=\"16\" x-left=\"38\" x-top=\"147\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"208\" height=\"16\" x=\"38\" y=\"147\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"38\" y=\"161\">\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3092\u30bb\u30c3\u30c8\u3059\u308b</text></g><rect stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"291.1\" height=\"26\" x=\"37\" y=\"102\"></rect><rect stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"291.1\" height=\"24\" x=\"37\" y=\"178\"></rect></g></svg>"}
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+
3
+ CaseRunner.current :tblock_styles
4
+
5
+ ThinReports::Report.generate_file(:pdf, CaseRunner.output_file) do
6
+ use_layout(CaseRunner.layout_file)
7
+
8
+ start_new_page
9
+
10
+ page.item(:space_single_helvetica).value('Char Space in Single(Helvetica)')
11
+ page.item(:space_single_ipamincho).value('文字間隔 in 単行(IPA明朝)')
12
+
13
+ page.item(:space_multi_times).value("Char Space\nin Multiple(Times New Roman)")
14
+ page.item(:space_multi_ipamincho).value("文字間隔\nin 複数行(IPA明朝)")
15
+
16
+ page.values(:left_top => '左上揃え',
17
+ :left_center => '左中央揃え',
18
+ :left_bottom => '左下揃え',
19
+ :center_top => '中央上揃え',
20
+ :center_center => '中央揃え',
21
+ :center_bottom => '中央下揃え',
22
+ :right_top => '右上揃え',
23
+ :right_center => '右中央揃え',
24
+ :right_bottom => '右下揃え')
25
+
26
+ page.item(:line_height).value("行間隔2.0\n日本語\nThinReports")
27
+ end
@@ -0,0 +1 @@
1
+ {"version":"0.6.0.pre3","finger-print":-1000472906,"config":{"title":"Tblock Styles","option":{},"page":{"paper-type":"A4","orientation":"portrait","margin-top":"20","margin-bottom":"20","margin-left":"20","margin-right":"20"}},"svg":"<svg width=\"595.2\" height=\"841.8\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"none\" viewBox=\"0 0 595.2 841.8\"><g class=\"canvas\"><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"5\" x-display=\"true\" x-id=\"\" font-size=\"18\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"555.2\" x-height=\"18\" x-left=\"20\" x-top=\"21\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"555.2\" height=\"18\" x=\"20\" y=\"21\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"38\">Char Space in Single(Helvetica)</text></g><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"space_single_helvetica\",\"display\":\"true\",\"desc\":null,\"multiple\":\"false\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":20,\"y\":50,\"width\":555.2,\"height\":18},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"text\",\"attrs\":{\"x\":20,\"y\":67,\"xml:space\":\"preserve\",\"kerning\":\"5\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"Helvetica\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-anchor\":\"start\",\"text-decoration\":\"none\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"5\" x-display=\"true\" x-multiple=\"false\" x-id=\"space_single_helvetica\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"555.2\" x-height=\"18\" x-left=\"20\" x-top=\"50\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"555.2\" height=\"18\" x=\"20\" y=\"50\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"61\">space_single_helvetica</text></g>LAYOUT--><line stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x1=\"426\" x2=\"426\" y1=\"20\" y2=\"78\"></line><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"5\" x-display=\"true\" x-id=\"\" font-size=\"18\" font-family=\"IPAMincho\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"323\" x-height=\"18\" x-left=\"20\" x-top=\"82\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"323\" height=\"18\" x=\"20\" y=\"82\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"98\">\u6587\u5b57\u9593\u9694 in \u5358\u884c\uff08IPA\u660e\u671d\uff09</text></g><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"space_single_ipamincho\",\"display\":\"true\",\"desc\":null,\"multiple\":\"false\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":20,\"y\":110,\"width\":555.2,\"height\":18},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"text\",\"attrs\":{\"x\":20,\"y\":126,\"xml:space\":\"preserve\",\"kerning\":\"5\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAMincho\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"start\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"5\" x-display=\"true\" x-multiple=\"false\" x-id=\"space_single_ipamincho\" x-width=\"555.2\" x-height=\"18\" x-left=\"20\" x-top=\"110\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAMincho\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"555.2\" height=\"18\" x=\"20\" y=\"110\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"121\">space_single_ipamincho</text></g>LAYOUT--><line stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"333\" y1=\"80\" y2=\"138\" x1=\"333\"></line><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"5\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"Times New Roman\" font-size=\"18\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"555.2\" x-height=\"38\" x-left=\"20\" x-top=\"148\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"555.2\" height=\"38\" x=\"20\" y=\"148\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"160\">Char Space</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"179\">in Multiple(Times New Roman)</text></g><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"space_multi_times\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":20,\"y\":199.9,\"width\":555.2,\"height\":51.2},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":20,\"y\":197.9,\"width\":555.2,\"height\":51.2,\"xml:space\":\"preserve\",\"kerning\":\"5\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"Times New Roman\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"start\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"5\" x-display=\"true\" x-multiple=\"true\" x-id=\"space_multi_times\" x-width=\"555.2\" x-height=\"51.2\" x-left=\"20\" x-top=\"199.9\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"Times New Roman\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"555.2\" height=\"51.2\" x=\"20\" y=\"199.9\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"210.9\">space_multi_times</text></g>LAYOUT--><line stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"386\" y1=\"165\" y2=\"251.1\" x1=\"386\"></line><line stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"149\" y1=\"148\" y2=\"234.1\" x1=\"149\"></line><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"5\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"IPAMincho\" font-size=\"18\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"323\" x-height=\"36\" x-left=\"20\" x-top=\"275\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"323\" height=\"36\" x=\"20\" y=\"275\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"291\">\u6587\u5b57\u9593\u9694</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"309\">in \u8907\u6570\u884c\uff08IPA\u660e\u671d\uff09</text></g><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"space_multi_ipamincho\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":20,\"y\":324,\"width\":555.2,\"height\":52.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":20,\"y\":324,\"width\":555.2,\"height\":52.1,\"xml:space\":\"preserve\",\"kerning\":\"5\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAMincho\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"start\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"5\" x-display=\"true\" x-multiple=\"true\" x-id=\"space_multi_ipamincho\" x-width=\"555.2\" x-height=\"52.1\" x-left=\"20\" x-top=\"324\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAMincho\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"555.2\" height=\"52.1\" x=\"20\" y=\"324\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"335\">space_multi_ipamincho</text></g>LAYOUT--><line stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"249\" y1=\"292\" y2=\"378.1\" x1=\"249\"></line><line stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"107\" y1=\"273\" y2=\"359.1\" x1=\"107\"></line><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"left_top\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":20,\"y\":406.1,\"width\":165.1,\"height\":69.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":20,\"y\":406.1,\"width\":165.1,\"height\":69.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-anchor\":\"start\",\"text-decoration\":\"none\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"left_top\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAGothic\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"165.1\" x-height=\"69.1\" x-left=\"20\" x-top=\"406.1\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"165.1\" height=\"69.1\" x=\"20\" y=\"406.1\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"417.1\">left_top</text></g>LAYOUT--><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"left_center\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"center\",\"line-height\":\"\",\"box\":{\"x\":215.1,\"y\":406.1,\"width\":165.1,\"height\":69.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":215.1,\"y\":406.1,\"width\":165.1,\"height\":69.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"start\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"left_center\" x-width=\"165.1\" x-height=\"69.1\" x-left=\"215.1\" x-top=\"406.1\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAGothic\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" x-valign=\"center\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"165.1\" height=\"69.1\" x=\"215.1\" y=\"406.1\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"217.1\" y=\"417.1\">left_center</text></g>LAYOUT--><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"left_bottom\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"bottom\",\"line-height\":\"\",\"box\":{\"x\":410,\"y\":406.1,\"width\":165.1,\"height\":69.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":410,\"y\":406.1,\"width\":165.1,\"height\":69.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"start\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"left_bottom\" x-width=\"165.1\" x-height=\"69.1\" x-left=\"410\" x-top=\"406.1\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAGothic\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" x-valign=\"bottom\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"165.1\" height=\"69.1\" x=\"410\" y=\"406.1\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"412\" y=\"417.1\">left_bottom</text></g>LAYOUT--><rect stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"165.1\" height=\"69.1\" x=\"20\" y=\"406.1\"></rect><rect stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"165.1\" height=\"69.1\" x=\"215.1\" y=\"406.1\"></rect><rect stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"165.1\" height=\"69.1\" x=\"410\" y=\"406.1\"></rect><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"line_height\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"\",\"line-height\":36,\"box\":{\"x\":311.1,\"y\":678,\"width\":179.1,\"height\":90},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":311.1,\"y\":678,\"width\":179.1,\"height\":90,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAPGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-anchor\":\"start\",\"text-decoration\":\"none\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"line_height\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAPGothic\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"179.1\" x-height=\"90\" x-left=\"311.1\" x-top=\"678\" x-line-height=\"36\" x-line-height-ratio=\"2\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"179.1\" height=\"90\" x=\"311.1\" y=\"678\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"313.1\" y=\"689\">line_height</text></g>LAYOUT--><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" font-size=\"18\" font-family=\"IPAPGothic\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"179.1\" x-height=\"142.8\" x-left=\"99\" x-top=\"678\" x-line-height=\"36\" x-line-height-ratio=\"2\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"179.1\" height=\"142.8\" x=\"99\" y=\"678\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"99\" y=\"693\">\u884c\u9593\u96942.0</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"99\" y=\"729\">\u65e5\u672c\u8a9e</text><text class=\"s-text-l2\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"99\" y=\"765\">ThinReports</text></g><line stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x1=\"93\" x2=\"511.2\" y1=\"692.8\" y2=\"692.8\"></line><line stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"511.2\" y1=\"727.8\" y2=\"727.8\" x1=\"93\"></line><line stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"511.2\" y1=\"766.8\" y2=\"766.8\" x1=\"93\"></line><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"center_top\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":20,\"y\":481,\"width\":165.1,\"height\":69.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":20,\"y\":481,\"width\":165.1,\"height\":69.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"middle\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"center_top\" x-width=\"165.1\" x-height=\"69.1\" x-left=\"20\" x-top=\"481\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAGothic\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"middle\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"165.1\" height=\"69.1\" x=\"20\" y=\"481\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"492\">center_top</text></g>LAYOUT--><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"center_center\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"center\",\"line-height\":\"\",\"box\":{\"x\":215.1,\"y\":481,\"width\":165.1,\"height\":69.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":215.1,\"y\":481,\"width\":165.1,\"height\":69.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"middle\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"center_center\" x-width=\"165.1\" x-height=\"69.1\" x-left=\"215.1\" x-top=\"481\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAGothic\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"middle\" x-valign=\"center\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"165.1\" height=\"69.1\" x=\"215.1\" y=\"481\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"217.1\" y=\"492\">center_center</text></g>LAYOUT--><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"center_bottom\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"bottom\",\"line-height\":\"\",\"box\":{\"x\":410,\"y\":481,\"width\":165.1,\"height\":69.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":410,\"y\":481,\"width\":165.1,\"height\":69.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"middle\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"center_bottom\" x-width=\"165.1\" x-height=\"69.1\" x-left=\"410\" x-top=\"481\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAGothic\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"middle\" x-valign=\"bottom\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"165.1\" height=\"69.1\" x=\"410\" y=\"481\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"412\" y=\"492\">center_bottom</text></g>LAYOUT--><rect stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"165.1\" height=\"69.1\" x=\"20\" y=\"481\"></rect><rect stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"165.1\" height=\"69.1\" x=\"215.1\" y=\"481\"></rect><rect stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"165.1\" height=\"69.1\" x=\"410\" y=\"481\"></rect><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"right_top\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"\",\"line-height\":\"\",\"box\":{\"x\":20,\"y\":556,\"width\":165.1,\"height\":69.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":20,\"y\":556,\"width\":165.1,\"height\":69.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"end\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"right_top\" x-width=\"165.1\" x-height=\"69.1\" x-left=\"20\" x-top=\"556\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAGothic\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"end\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"165.1\" height=\"69.1\" x=\"20\" y=\"556\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"22\" y=\"567\">right_top</text></g>LAYOUT--><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"right_center\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"center\",\"line-height\":\"\",\"box\":{\"x\":215.1,\"y\":556,\"width\":165.1,\"height\":69.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":215.1,\"y\":556,\"width\":165.1,\"height\":69.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"end\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"right_center\" x-width=\"165.1\" x-height=\"69.1\" x-left=\"215.1\" x-top=\"556\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAGothic\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"end\" x-valign=\"center\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"165.1\" height=\"69.1\" x=\"215.1\" y=\"556\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"217.1\" y=\"567\">right_center</text></g>LAYOUT--><!--SHAPE{\"type\":\"s-tblock\",\"id\":\"right_bottom\",\"display\":\"true\",\"desc\":null,\"multiple\":\"true\",\"valign\":\"bottom\",\"line-height\":\"\",\"box\":{\"x\":410,\"y\":556,\"width\":165.1,\"height\":69.1},\"format\":{\"base\":\"\",\"type\":\"\"},\"value\":\"\",\"ref-id\":\"\",\"svg\":{\"tag\":\"textArea\",\"attrs\":{\"x\":410,\"y\":556,\"width\":165.1,\"height\":69.1,\"xml:space\":\"preserve\",\"kerning\":\"auto\",\"fill\":\"#000000\",\"fill-opacity\":\"1\",\"font-size\":\"18\",\"font-family\":\"IPAGothic\",\"font-weight\":\"normal\",\"font-style\":\"normal\",\"text-decoration\":\"none\",\"text-anchor\":\"end\"}}}SHAPE--><!--LAYOUT<g class=\"s-tblock\" x-format-type=\"\" x-value=\"\" x-format-base=\"\" x-ref-id=\"\" kerning=\"auto\" x-display=\"true\" x-multiple=\"true\" x-id=\"right_bottom\" x-width=\"165.1\" x-height=\"69.1\" x-left=\"410\" x-top=\"556\" fill=\"#000000\" fill-opacity=\"1\" font-size=\"18\" font-family=\"IPAGothic\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"end\" x-valign=\"bottom\"><rect class=\"s-tblock-box\" stroke=\"#7C4007\" fill=\"#f4e2c4\" stroke-width=\"0.28\" fill-opacity=\"0.8\" width=\"165.1\" height=\"69.1\" x=\"410\" y=\"556\"></rect><text class=\"s-tblock-id\" font-size=\"11\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-decoration=\"none\" text-anchor=\"start\" kerning=\"auto\" stroke=\"none\" fill=\"#7C4007\" fill-opacity=\"1\" x=\"412\" y=\"567\">right_bottom</text></g>LAYOUT--><rect stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"165.1\" height=\"69.1\" x=\"20\" y=\"556\"></rect><rect stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"165.1\" height=\"69.1\" x=\"215.1\" y=\"556\"></rect><rect stroke=\"#ff0000\" stroke-width=\"1\" fill=\"none\" fill-opacity=\"1\" class=\"s-rect\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" rx=\"0\" ry=\"0\" width=\"165.1\" height=\"69.1\" x=\"410\" y=\"556\"></rect></g></svg>"}
@@ -0,0 +1,9 @@
1
+ # coding: utf-8
2
+
3
+ CaseRunner.current :text_align
4
+
5
+ ThinReports::Report.generate_file(:pdf, CaseRunner.output_file) do
6
+ use_layout(CaseRunner.layout_file)
7
+
8
+ start_new_page
9
+ end
@@ -0,0 +1 @@
1
+ {"version":"0.6.0.pre3","finger-print":755674500,"config":{"title":"Case: Text Align","option":{},"page":{"paper-type":"A4","orientation":"portrait","margin-top":"20","margin-bottom":"20","margin-left":"20","margin-right":"20"}},"svg":"<svg width=\"595.2\" height=\"841.8\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"none\" viewBox=\"0 0 595.2 841.8\"><g class=\"canvas\"><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" font-size=\"36\" font-family=\"Helvetica\" font-weight=\"normal\" font-style=\"normal\" text-anchor=\"end\" text-decoration=\"none\" x-width=\"555.2\" x-height=\"72\" x-left=\"20\" x-top=\"19\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"555.2\" height=\"72\" x=\"20\" y=\"19\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"575.2\" y=\"50\">Align Right</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"575.2\" y=\"86\">Helvetica</text></g><line stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x1=\"297.6\" x2=\"297.6\" y1=\"20\" y2=\"821.8\"></line><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"IPAMincho\" font-size=\"36\" text-anchor=\"end\" text-decoration=\"none\" x-width=\"555.2\" x-height=\"72\" x-left=\"20\" x-top=\"105\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"555.2\" height=\"72\" x=\"20\" y=\"105\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"575.2\" y=\"137\">\u53f3\u5bc4\u305b</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"575.2\" y=\"173\">IPA\u660e\u671d</text></g><line stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"297.6\" y1=\"20\" y2=\"821.8\" x1=\"297.6\"></line><line stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"575.2\" y1=\"20\" y2=\"821.8\" x1=\"575.2\"></line><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"Helvetica\" font-size=\"36\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"555.2\" x-height=\"72\" x-left=\"20\" x-top=\"240\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"555.2\" height=\"72\" x=\"20\" y=\"240\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"297.6\" y=\"271\">Align Center</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"297.6\" y=\"307\">Helvetica</text></g><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"IPAMincho\" font-size=\"36\" text-anchor=\"middle\" text-decoration=\"none\" x-width=\"555.2\" x-height=\"72\" x-left=\"20\" x-top=\"330\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"555.2\" height=\"72\" x=\"20\" y=\"330\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"297.6\" y=\"362\">\u4e2d\u592e\u5bc4\u305b</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"297.6\" y=\"398\">IPA\u660e\u671d</text></g><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"Helvetica\" font-size=\"36\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"555.2\" x-height=\"72\" x-left=\"20\" x-top=\"490\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"555.2\" height=\"72\" x=\"20\" y=\"490\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"521\">Align Left</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"557\">Helvetica</text></g><g class=\"s-text\" stroke-width=\"0\" fill=\"#000000\" fill-opacity=\"1\" kerning=\"auto\" x-display=\"true\" x-id=\"\" stroke=\"none\" font-weight=\"normal\" font-style=\"normal\" font-family=\"IPAMincho\" font-size=\"36\" text-anchor=\"start\" text-decoration=\"none\" x-width=\"555.2\" x-height=\"72\" x-left=\"20\" x-top=\"580\"><rect class=\"s-text-box\" stroke=\"none\" fill=\"#000000\" fill-opacity=\"0.001\" width=\"555.2\" height=\"72\" x=\"20\" y=\"580\"></rect><text class=\"s-text-l0\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"612\">\u5de6\u5bc4\u305b</text><text class=\"s-text-l1\" xml:space=\"preserve\" stroke=\"none\" fill=\"inherit\" fill-opacity=\"1\" text-decoration=\"none\" x=\"20\" y=\"648\">IPA\u660e\u671d</text></g><line stroke=\"#000000\" stroke-width=\"1\" fill=\"none\" class=\"s-line\" x-display=\"true\" x-stroke-type=\"solid\" stroke-dasharray=\"none\" x-id=\"\" x2=\"20\" y1=\"20\" y2=\"821.8\" x1=\"20\"></line></g></svg>"}
@@ -5,105 +5,85 @@ require 'test/unit/helper'
5
5
  class ThinReports::Core::Shape::Base::TestInternal < MiniTest::Unit::TestCase
6
6
  include ThinReports::TestHelpers
7
7
 
8
- class TestInternal < ThinReports::Core::Shape::Base::Internal
9
- format_delegators :m1, :m2
8
+ def create_internal(format_config = {}, &block)
9
+ format = unless format_config.empty?
10
+ format_klass = ::Class.new(ThinReports::Core::Shape::Basic::Format) {
11
+ config_reader(*format_config.keys.map {|k| k.to_sym })
12
+ }
13
+ format_klass.new(format_config)
14
+ else
15
+ ThinReports::Core::Shape::Basic::Format.new({})
16
+ end
17
+
18
+ klass = ::Class.new(ThinReports::Core::Shape::Base::Internal, &block)
19
+ klass.new(flexmock('parent'), format)
10
20
  end
11
21
 
12
- def setup
13
- @internal = TestInternal.new(flexmock('parent'),
14
- flexmock(:m1 => 'm1', :m2 => 'm2'))
22
+ def test_self_format_delegators_should_defines_method_delegated_from_format
23
+ internal = create_internal('m1' => 'm1_value') {
24
+ format_delegators :m1
25
+ }
26
+ assert_respond_to internal, :m1
15
27
  end
16
28
 
17
- def test_format_delegators_macro
18
- assert_respond_to @internal, :m1
19
- assert_respond_to @internal, :m2
29
+ def test_method_delegated_from_format_should_return_same_value_as_an_format
30
+ internal = create_internal('m1' => 'm1 value') {
31
+ format_delegators :m1
32
+ }
33
+ assert_same internal.m1, internal.format.m1
20
34
  end
21
35
 
22
- def test_methods_delegated_from_format
23
- assert_same @internal.m1, @internal.format.m1
24
- assert_same @internal.m2, @internal.format.m2
36
+ def test_switch_parent_should_replace_a_parent_property_to_the_specified_new_parent
37
+ new_parent = flexmock('new_parent')
38
+
39
+ internal = create_internal
40
+ internal.switch_parent!(new_parent)
41
+
42
+ assert_same internal.parent, new_parent
25
43
  end
26
44
 
27
- def test_switch_parent!
45
+ def test_copied_internal_should_have_the_new_value_specified_as_a_parent_property
28
46
  new_parent = flexmock('new_parent')
29
- res = @internal.switch_parent!(new_parent)
30
-
31
- assert_same @internal, res
32
- assert_same @internal.parent, new_parent
47
+ internal = create_internal {
48
+ def style
49
+ @style ||= ThinReports::Core::Shape::Style::Base.new(format)
50
+ end
51
+ }
52
+ assert_same internal.copy(new_parent).parent, new_parent
33
53
  end
34
54
 
35
- def test_available_style?
36
- assert_operator @internal, :available_style?, :fill
37
- assert_operator @internal, :available_style?, :stroke
38
-
39
- refute_operator @internal, :available_style?, 'font-family'
40
- refute_operator @internal, :available_style?, :x
55
+ def test_copied_internal_should_have_style_copied_from_original
56
+ internal = create_internal {
57
+ def style
58
+ @style ||= ThinReports::Core::Shape::Style::Base.new(format)
59
+ end
60
+ }
61
+ internal.style.write_internal_style(:foo, 'bar')
62
+ new_internal = internal.copy(flexmock('new_parent'))
63
+
64
+ assert_equal new_internal.style.read_internal_style(:foo), 'bar'
41
65
  end
42
66
 
43
- def test_attributes
44
- format = flexmock('format')
45
- format.should_receive(:svg_attrs).
46
- and_return('fill' => 'red',
47
- 'stroke' => 'black',
48
- 'x' => 100,
49
- 'y' => 100,
50
- 'width' => 200)
51
- internal = TestInternal.new(flexmock('parent'), format)
52
- internal.attrs['fill'] = '#ff0000'
53
- internal.attrs['stroke'] = '#000000'
54
-
55
- assert_equal internal.attributes, {'fill' => '#ff0000',
56
- 'stroke' => '#000000',
57
- 'x' => 100,
58
- 'y' => 100,
59
- 'width' => 200}
67
+ def test_copied_internal_should_have_states_property_copied_from_original
68
+ internal = create_internal {
69
+ def style
70
+ @style ||= ThinReports::Core::Shape::Style::Base.new(format)
71
+ end
72
+ }
73
+ internal.states[:foo] = 'bar'
74
+ new_internal = internal.copy(flexmock('new_parent'))
75
+
76
+ assert_equal new_internal.states[:foo], 'bar'
60
77
  end
61
78
 
62
- def test_copy
63
- @internal.attrs.update('stroke' => 'red')
64
- @internal.states.update(:value => '123')
65
-
66
- new_internal = @internal.copy(flexmock('new_parent'))
67
-
68
- refute_same @internal, new_internal
69
- assert_instance_of TestInternal, new_internal
70
-
71
- # Test for parent property
72
- refute_same @internal.parent, new_internal.parent
73
-
74
- # Test for format property
75
- assert_same @internal.format, new_internal.format
76
-
77
- # Test for attrs
78
- args_attrs_test = [@internal.attrs, new_internal.attrs]
79
-
80
- assert_equal(*args_attrs_test)
81
- refute_same(*args_attrs_test)
82
-
83
- # Test for value of attrs
84
- args_attr_values_test = [@internal.attrs['stroke'],
85
- new_internal.attrs['stroke']]
86
-
87
- assert_equal(*args_attr_values_test)
88
- refute_same(*args_attr_values_test)
89
-
90
- @internal.attrs['fill'] = 'black'
91
- assert_nil new_internal.attrs['fill']
92
-
93
- # Test for states
94
- args_states_test = [@internal.states, new_internal.states]
95
-
96
- assert_equal(*args_states_test)
97
- refute_same(*args_states_test)
98
-
99
- # Test for value of states
100
- args_state_values_test = [@internal.states[:value],
101
- new_internal.states[:value]]
102
-
103
- assert_equal(*args_state_values_test)
104
- refute_same(*args_state_values_test)
105
-
106
- @internal.states[:value].reverse!
107
- refute_equal(*args_state_values_test)
79
+ def test_copy_should_execute_block_with_new_internal_as_argument
80
+ internal = create_internal {
81
+ def style
82
+ @style ||= ThinReports::Core::Shape::Style::Base.new(format)
83
+ end
84
+ }
85
+ internal.copy(flexmock('new_parent')) do |new_internal|
86
+ assert_equal new_internal.is_a?(ThinReports::Core::Shape::Base::Internal), true
87
+ end
108
88
  end
109
89
  end
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+
3
+ require 'test/unit/helper'
4
+
5
+ class ThinReports::Core::Shape::Basic::TestBlockFormat < MiniTest::Unit::TestCase
6
+ include ThinReports::TestHelpers
7
+
8
+ TEST_BLOCK_FORMAT = {
9
+ "value" => "default value",
10
+ "box" => {
11
+ "x" => 100.0,
12
+ "y" => 100.0,
13
+ "width" => 100.0,
14
+ "height" => 100.0
15
+ }
16
+ }
17
+
18
+ def test_value_reader_via_TEST_BLOCK_FORMAT
19
+ assert_equal format.value, 'default value'
20
+ end
21
+
22
+ def test_box_reader_via_TEST_BLOCK_FORMAT
23
+ assert_equal format.box.values_at('x', 'y', 'width', 'height'),
24
+ [100.0, 100.0, 100.0, 100.0]
25
+ end
26
+
27
+ def format
28
+ ThinReports::Core::Shape::Basic::BlockFormat.new(TEST_BLOCK_FORMAT)
29
+ end
30
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+
3
+ require 'test/unit/helper'
4
+
5
+ class ThinReports::Core::Shape::Basic::TestBlockInterface < MiniTest::Unit::TestCase
6
+ include ThinReports::TestHelpers
7
+
8
+ Basic = ThinReports::Core::Shape::Basic
9
+
10
+ def setup
11
+ parent = flexmock('parent')
12
+ format = Basic::BlockFormat.new({})
13
+ internal = Basic::BlockInternal.new(parent, Basic::BlockFormat.new({}))
14
+
15
+ @interface = Basic::BlockInterface.new(parent, format, internal)
16
+ end
17
+
18
+ def test_value_should_work_as_reader_with_no_arguments
19
+ @interface.internal.write_value('new value')
20
+ assert_equal @interface.value, 'new value'
21
+ end
22
+
23
+ def test_value_should_work_as_writer_with_arguments
24
+ @interface.value('new value')
25
+ assert_equal @interface.internal.read_value, 'new value'
26
+ end
27
+ end
@@ -0,0 +1,55 @@
1
+ # coding: utf-8
2
+
3
+ require 'test/unit/helper'
4
+
5
+ class ThinReports::Core::Shape::Basic::TestBlockInternal < MiniTest::Unit::TestCase
6
+ include ThinReports::TestHelpers
7
+
8
+ Basic = ThinReports::Core::Shape::Basic
9
+
10
+ def test_box_should_return_value_of_format
11
+ internal = init_internal('box' => 'box of format')
12
+ assert_equal internal.box, 'box of format'
13
+ end
14
+
15
+ def test_read_value_should_return_value_from_format
16
+ internal = init_internal('value' => 'default value')
17
+ assert_equal internal.read_value, 'default value'
18
+ end
19
+
20
+ def test_read_value_should_return_value_from_state_with_value_key
21
+ internal = init_internal
22
+ internal.states[:value] = 'new value'
23
+ assert_equal internal.read_value, 'new value'
24
+ end
25
+
26
+ def test_real_value_should_return_the_same_value_as_a_read_value_method
27
+ internal = init_internal
28
+ internal.states[:value] = 'foo'
29
+ assert_same internal.real_value, internal.read_value
30
+ end
31
+
32
+ def test_write_value_should_save_value_to_states_store_as_value
33
+ internal = init_internal
34
+ internal.write_value('new value')
35
+ assert_equal internal.states[:value], 'new value'
36
+ end
37
+
38
+ def test_type_of_asker_should_return_true_when_given_the_block_value
39
+ assert_equal init_internal.type_of?(:block), true
40
+ end
41
+
42
+ def test_value_should_works_the_same_as_read_value_method
43
+ internal = init_internal
44
+ internal.write_value('new value')
45
+ assert_same internal.read_value, internal.value
46
+ end
47
+
48
+ def test_type_of_asker_should_return_false_otherwise
49
+ assert_equal [:iblock, :tblock, :text, :list].all? {|t| !init_internal.type_of?(t)}, true
50
+ end
51
+
52
+ def init_internal(format = {})
53
+ Basic::BlockInternal.new(flexmock('parent'), Basic::BlockFormat.new(format))
54
+ end
55
+ end
@@ -8,6 +8,11 @@ class ThinReports::Core::Shape::Basic::TestInterface < MiniTest::Unit::TestCase
8
8
  # Alias
9
9
  Basic = ThinReports::Core::Shape::Basic
10
10
 
11
+ def create_interface(format_config = {})
12
+ Basic::Interface.new(flexmock('parent'),
13
+ Basic::Format.new(format_config))
14
+ end
15
+
11
16
  def setup
12
17
  format = flexmock('format')
13
18
  format.should_receive(:display? => true)
@@ -15,56 +20,99 @@ class ThinReports::Core::Shape::Basic::TestInterface < MiniTest::Unit::TestCase
15
20
  @basic = Basic::Interface.new(flexmock('parent'), format)
16
21
  end
17
22
 
18
- def test_visible
19
- assert_equal @basic.visible?, true
20
- @basic.visible(false)
21
- assert_equal @basic.visible?, false
23
+ def test_id_should_return_id_with_reference_to_internal
24
+ basic = create_interface('id' => 'foo')
25
+ assert_equal basic.id, basic.internal.id
26
+ end
27
+
28
+ def test_id_should_return_cloned_id
29
+ basic = create_interface('id' => 'basic-id')
30
+ refute_same basic.id, basic.internal.id
31
+ end
32
+
33
+ def test_type_should_operate_as_delegator_of_internal
34
+ basic = create_interface('type' => 's-rect')
35
+ assert_same basic.type, basic.internal.type
36
+ end
37
+
38
+ def test_visible_asker_should_return_result_with_reference_to_style_of_internal
39
+ basic = create_interface('display' => 'false')
40
+ assert_equal basic.visible?, basic.internal.style.visible
41
+ end
42
+
43
+ def test_visible_should_properly_set_visibility_to_style_of_internal
44
+ basic = create_interface('display' => 'false')
45
+ basic.visible(true)
46
+
47
+ assert_equal basic.internal.style.visible, true
48
+ end
49
+
50
+ def test_style_should_operate_as_reader_when_one_argument_is_given
51
+ basic = create_interface('svg' => {'attrs' => {'fill' => '#ff0000'}})
52
+
53
+ assert_equal basic.style(:fill_color), '#ff0000'
22
54
  end
23
55
 
24
- def test_style
25
- @basic.style(:fill, '#ff0000')
26
- @basic.style(:stroke, '#0000ff')
56
+ def test_style_should_operate_as_writer_when_two_arguments_are_given
57
+ basic = create_interface
58
+ basic.style(:border_color, '#000000')
27
59
 
28
- assert_equal @basic.internal.attrs, {'fill' => '#ff0000',
29
- 'stroke' => '#0000ff'}
30
- assert_raises ThinReports::Errors::UnknownShapeStyleName do
31
- @basic.style(:unknown, 'unknown value')
32
- end
60
+ assert_equal basic.style(:border_color), '#000000'
33
61
  end
34
62
 
35
- def test_styles
36
- @basic.styles(:fill => 'red', :stroke => 'blue')
63
+ def test_style_should_operate_as_writer_for_border_style_when_three_arguments_are_given
64
+ basic = create_interface
65
+ basic.style(:border, 1, '#ffffff')
37
66
 
38
- assert_equal @basic.internal.attrs, {'fill' => 'red',
39
- 'stroke' => 'blue'}
40
- assert_raises ThinReports::Errors::UnknownShapeStyleName do
41
- @basic.styles(:fill => 'blue', :unknown => 'black')
42
- end
67
+ assert_equal basic.style(:border), [1, '#ffffff']
43
68
  end
44
69
 
45
- def test_hide
46
- @basic.hide
47
- assert_equal @basic.visible?, false
70
+ def test_style_should_return_self_when_two_arguments_are_given
71
+ assert_instance_of Basic::Interface, create_interface.style(:border_width, 1)
48
72
  end
49
73
 
50
- def test_show
51
- @basic.visible(false)
52
- @basic.show
53
- assert_equal @basic.visible?, true
74
+ def test_style_should_return_self_when_three_arguments_are_given
75
+ assert_instance_of Basic::Interface, create_interface.style(:border, 1, '#000000')
54
76
  end
55
77
 
56
- def test_method_chain
57
- @basic.hide.show
58
- assert_equal @basic.visible?, true
78
+ def test_styles_should_properly_set_the_specified_styles_as_Hash
79
+ basic = create_interface
80
+ basic.styles(:fill_color => '#ff0000',
81
+ :border_color => '#000000',
82
+ :border_width => 5,
83
+ :visible => false)
59
84
 
60
- @basic.style(:fill, 'red').hide
61
- assert_equal @basic.internal.attrs['fill'], 'red'
62
- assert_equal @basic.visible?, false
85
+ assert_equal [basic.style(:fill_color),
86
+ basic.style(:border_color),
87
+ basic.style(:border_width),
88
+ basic.style(:visible)],
89
+ ['#ff0000', '#000000', 5, false]
90
+ end
91
+
92
+ def test_styles_should_return_self
93
+ basic = create_interface
94
+ assert_instance_of Basic::Interface, basic.styles(:fill => '#ff0000')
95
+ end
96
+
97
+ def test_hide_should_properly_set_false_to_visibility
98
+ basic = create_interface
99
+ basic.hide
63
100
 
64
- @basic.styles(:fill => 'red', :stroke => 'blue').style(:fill, 'black')
65
- assert_equal @basic.internal.attrs['fill'], 'black'
101
+ assert_equal basic.visible?, false
102
+ end
103
+
104
+ def test_hide_should_return_self
105
+ assert_instance_of Basic::Interface, create_interface.hide
106
+ end
107
+
108
+ def test_show_should_properly_set_true_to_visibility
109
+ basic = create_interface
110
+ basic.show
66
111
 
67
- @basic.visible(true).visible(false)
68
- assert_equal @basic.visible?, false
112
+ assert_equal basic.visible?, true
113
+ end
114
+
115
+ def test_show_should_return_self
116
+ assert_instance_of Basic::Interface, create_interface.show
69
117
  end
70
118
  end