[Start Script and ScriptParse plus example script stolen from ELER. Dougal Stanton **20080925165157] [Make example script more realistic Dougal Stanton **20080925231018] [Changes to speech/scene parsers Dougal Stanton **20080925231053] [More parser rewrites, clarifying ideas Dougal Stanton **20080926162514] [Space out script a bit Dougal Stanton **20080927181527] [Further parser stuff: scenes parse well now Dougal Stanton **20080927181614 Joining scenes together is still pretty tricky though I'm sure that there's something obvious that I'm missing. ] [Add title/credit block to example script Dougal Stanton **20080929131339] [Expand scene structure definition Dougal Stanton **20080929135159] [Load parsed data into Scene data Dougal Stanton **20080929140036] [Parse raw script and place into right places Dougal Stanton **20080929140457] [Reduce constraints on script contents Dougal Stanton **20081009122101] [Merge Manuscript and Script types Dougal Stanton **20081009133113] [Extract cast from script Dougal Stanton **20081009133239] [Convert raw script into discrete scenes Dougal Stanton **20081009133318] [rename function, make explicit exports for Script parser module Dougal Stanton **20081017154215] [Type signature for cast function Dougal Stanton **20081017160119] [Add design NOTES file with compiler outline Dougal Stanton **20081118165117] [Initial compiler module to parse script file Dougal Stanton **20081215163933] [Mvove script into example folder Dougal Stanton **20081215174022] [List of characters and their on-scene cordinates Dougal Stanton **20081215174057] [Harden functor instance of Script Dougal Stanton **20081222203621 I don't know how many more arguments or rearrangements the Script type will have so I'll generalise some of the pattern matching to avoid awkward changes later. ] [Store script location Dougal Stanton **20081222203757 All the file references in a script are relative to the script file itself, so it makes sense to store its location (relative to CWD) in the script itself. Provided we can find the script, we can then track down all the files it references (always assuming that the paths are accurate, of course). ] [Make CastList type opaque Dougal Stanton **20090118184409 Made some accessor functions and limited the export list. ] [Add show instance for cast list Dougal Stanton **20090118185014] [Add parser for image maps Dougal Stanton **20090118190649] [Read in and parse image map from file Dougal Stanton **20090118190731] [Correct location of scene images relative to script Dougal Stanton **20090119000137 The script needs to know where the images are relative to itself or reading the image maps will fail. ] [Scenes can now have raw speeches or be annotated with actors' locations Dougal Stanton **20090119000418] [Parse and include locations of characters Dougal Stanton **20090119000524 The cast list is parsed from image map files, one for each scene, and included in the relevant scenes. ] [Clean up functions: reorder arguments and add comments Dougal Stanton **20090124162515] [Rename ScriptParse to Parse Dougal Stanton **20081120150854] [Rename import for ScriptParse to Parse Dougal Stanton **20090130221828] [Add Panel type Dougal Stanton **20090130222049] [Example image maps Dougal Stanton **20090413205319] [Print parsed scripts from cmdline Dougal Stanton **20090415162740] [Replace ELER comic with own example Dougal Stanton **20090415225335 Ignore-this: b836701bb8b56964f5c96e3ece2becf4 ] [Simplify script format and rewrite parser (not finished) Dougal Stanton **20090416231154 Ignore-this: 5235fdb4e161dc25ec224cadd5788708 ] [Make path to bg image optional Dougal Stanton **20090417181508 Ignore-this: ba0b923f7dffba930c5aaf2ca9665e53 ] [Parse eof correctly and enforce name begins with letter Dougal Stanton **20090417181540 Ignore-this: 428ec9bbea8c88973b9e229373f80f83 ] [Change example script preamble for problematic case Dougal Stanton **20090418230908 Ignore-this: 3f344f01da3e70e54af5d093c2e7f3c ] [Deal with script preamble properly Dougal Stanton **20090418230943 Ignore-this: dd6a9eeb69ef892b222bb3e54756bece Preamble still needs fleshed out. Haven't decided what's useful and what's not worth including yet. Maybe needs proper labels, eg -- author: Dougal Stanton instead of -- Dougal Stanton which would help with parsing and allow more free-form writing. ] [Update notes for new parser/new ideas Dougal Stanton **20090419220329 Ignore-this: 4779d3f14fdf06c0e1842bb251e79ab6 ] [Rework parser Dougal Stanton **20090421213618 Ignore-this: 131df86c81bb1b33ba8de9fcd0866e74 Significant reworking or parser to make effective use of parsec. There is still some work to be done. The preamble should take some field names (like .cabal files) and then it can be more reliably parsed with the 'permute' parser. ] [Clean up formatting and imports Dougal Stanton **20090421220848 Ignore-this: 63f3daa0189671d0e51e739c76e13a72 ] [Rewrite testing front end Dougal Stanton **20090421231539 Ignore-this: 3e46e5bae630de7b34c7bc64700b013c Still using the compiler front end for testing, to output the stages as I include them, but it's getting interesting now. Next stage is to parse the image dimensions and think about distributing the speech bubbles according to the data I've got. ] [Add cabal file (v0.0) Dougal Stanton **20090526224008 Ignore-this: 2ea59b17fffeead0a4ef767ba1c26d84 ] [Remove License-file field; not needed Dougal Stanton **20090816164635 Ignore-this: 4a11e1b6a8568cf13c5847102510577b ] [Add Layout file Dougal Stanton **20090829140447 Ignore-this: dd2584069d7280a9530312771a3e2c09 ] [Frames are placed below current frames Dougal Stanton **20090830150246 Ignore-this: e31db9d4620ae3b824972204b340599 ] [Add Pix file, for creating & writing images Dougal Stanton **20090830164727 Ignore-this: 3cf097e978a02c8ed8bd1835ba6b4792 ] [First end-to-end working version Dougal Stanton **20090830164913 Ignore-this: c759fab570fbd8cf6a7a4410f574e1c7 Converts scripts and images into output files numbered frame1, frame2 etc. The speech is just written as black text straight onto the image, with no surrounding bubble but it's a good start. ] [Rename corner anchor Dougal Stanton **20090830185414 Ignore-this: 5ebacb2af0c306668648586dd63f625a ] [Clean up Compiler.hs; don't print script Dougal Stanton **20090901230035 Ignore-this: 4f85c624ea1ff2e0965e3799c4381126 ] [Pass through midpoint of character frame Dougal Stanton **20090901230142 Ignore-this: e35791d9e40c6fb01d2a99ecdedc3352 ] [Bubbles with tails (not directed) Dougal Stanton **20090901230211 Ignore-this: 39dd22c5dec17f9f88eeb5b494f07184 The speech bubbles now have tails but they're a bit crap --- they don't go in the right direction and they are always on top of the bubbles. ] [Use diagrams package in cabal file Dougal Stanton **20090901230316 Ignore-this: f1b6cc6cd01edbdd8b3e16e9de72de0c ] ['Conversation' example script and image Dougal Stanton **20090915215838 Ignore-this: 2e23bb0e303135faa9839f52d2376dbe ] [Picture of Alasdair and corresponding img map Dougal Stanton **20090816170143 Ignore-this: 66efb8cf119a70515ef24e046f9198b0 ] [Code dump Dougal Stanton **20090915215542 Ignore-this: 255d37e1b72702ae24881616c668893c Massive number of changes to work towards release. Still having annoying problems with bubble placement because I don't have a good way of placing things. ] [Expand search area but keep bubble size fixed Dougal Stanton **20090916142319] [Rename project to 'comicbake' Dougal Stanton **20090916211917 Ignore-this: e37e20019287365bd0baad2d3d3bd3ed ] [Remove inaccurate comment Dougal Stanton **20090916230025 Ignore-this: 429b91b28439b13302e30f7db0502900 ] [Change content of 'conversation' script Dougal Stanton **20090916230053 Ignore-this: 1535bf759b206991a346af6bf38bc613 ] [Better debugging output onto final image Dougal Stanton **20090916230230 Ignore-this: 6dac9542c28f546e74ba5e3f8e82d75a Draw boxes around the guessed sizes of the speech bubbles and the actual locations of the characters' heads. ] [TAG 0.0 Dougal Stanton **20090916230536 Ignore-this: 7fc9e46ec78c57dfeeb5045fd7942a63 ] [Fix bug in overlapping detection Dougal Stanton **20090917130424 Detection of overlapping areas was complete nonsense which can't have been very helpful... ] [Use inRange instead of homebrew range tests Dougal Stanton **20090917132701] [Correct name of executable in cabal file Dougal Stanton **20090921230412 Ignore-this: 582ef006c101a1037d6b29397ee19b35 ] [Use Box type, patch in GD library instead of Diagrams Dougal Stanton **20090927180144 Ignore-this: 106f9e57ea289c7dba150f3c41831403 A bit of a code bomb here but everything got mixed up by accident and I didn't realise until it was too late. Two major changes: - changed all the main references to Frame (ie [Pt]) into a proper Box type rather than a type synonym. - removed the diagrams library and replace it with GD library bindings, which are lower level but more exact. They don't yet have proper text output but they're letting me debug things better. ] [Comments, cleaner variable names Dougal Stanton **20090927213550 Ignore-this: 90817da5bea24f154e5e7747d0951b15 ] [Thread image sizes into scene data Dougal Stanton **20090927213854 Ignore-this: d8b0b69edb363a0217b5ac7133de69d7 ] [Add Ord instance for Box Dougal Stanton **20090928223445 Ignore-this: 858a00173fa7c0156d1f9bdee9631684 ] [use variable placeholder Dougal Stanton **20091005171946 Ignore-this: 8907f4e738962f56e407e453e5f1c496 ] [GD library now working properly Dougal Stanton **20091005172009 Ignore-this: 98a6b297633db4ef1afa4698c10f0421 Speech bubbles are still square with no tails yet. Added features: - accurate dimensions for speech boxes - known sizes for bg images ] [Rewrite NOTES as README file Dougal Stanton **20091006162608] [Fiddling with GD fonts Dougal Stanton **20091011173207 Ignore-this: 5b4fe575746171c8701dc55b0aa95921 Don't know a proper solution for this. Hard coding the font path seems really dirty. ] [Cleanups, instances, error messages Dougal Stanton **20091011174319 Ignore-this: 9a660e4930f495b1a87d4a0ac9466f7b ] [Lengthen conversation script a bit Dougal Stanton **20091016233545 Ignore-this: 6cea629c1bcd9d3f29360921837d553a ] [Use FloatingBubble structure Dougal Stanton **20091018135442 Ignore-this: edfdf8bdb252d0c6513fd06396137982 ] [Clean up/clarify candidate generation Dougal Stanton **20091018135531 Ignore-this: 8c89aafd1ce1a37574d262308a1d9028 ] [Added simulated annealing file (not used yet) Dougal Stanton **20091019211933 Ignore-this: cd985124e3043b89e71ffd2288e4628c Will use this in future to hunt for appropriate speech bubble placements. ] [Use SA (not finished) Dougal Stanton **20091019212131 Ignore-this: 3364de35281d56f003461ad976cee6ca Using simulated annealing but more work needs to be done. Needs another cost element to penalise bubbles that are floating too near the wrong people. Also would prefer to pull in Mersenne twister rather than piping random number (generator) through the whole program. ] [Clean up SA module, remove compiler warnings Dougal Stanton **20091027220615 Ignore-this: f47c9d14587f6e4ef2f9a4ec0601e85 ] [Use SA fully, remove previous search attempts Dougal Stanton **20091027220847 Ignore-this: 12c38579fa2c530ad5cc4ca6fb855d79 Using some random generation of states and 3 different cost measures: - are the speech bubbles out of order? - are the speech bubbles overlapping each other or the characters' faces? - are the speech bubbles nearer other characters than the ones who "said" the words? The last one is trickier and should be reworked or removed. Adding tails to the bubbles will counter some of the strange attribution mistakes when reading badly laid-out comics. ] [More examples for testing Dougal Stanton **20091110213754 Ignore-this: 3e658748912d3492562a28d0aa3f7856 ] [Use locally patched GD lib for now Dougal Stanton **20100321190420 Ignore-this: 7f194e075da99ccd970a7b2d003bb7b3 ] [typo Dougal Stanton **20101017113824 Ignore-this: 764c9aeb897a5655868de906c682fe14 ] [use hackage gd Dougal Stanton **20101017113858 Ignore-this: c2d78bef04f005c9f64b0085fe49db65 ] [import all Script module Dougal Stanton **20101017113940 Ignore-this: 9d09dc751f8738f116cf58892f67ec0d ] [make Script exports explicit Dougal Stanton **20101017114038 Ignore-this: 16b038517e0ccd92703092c9d131e267 ] [Remove empty location reference for character Dougal Stanton **20101018114107 Ignore-this: d3247ac606d1a036a79d385af79ff220 ] [Rename Layout module to Objects, reduce responsibility Dougal Stanton **20101018114127 Ignore-this: d1542fc22221cfb10ee8b7a2ba29095d ] [Add Sanitise module to clean up parsing output Dougal Stanton **20101018114258 Ignore-this: 6d4dc4d51fb481e56744adfe68677794 ] [functor instance for pane Dougal Stanton **20101018182932 Ignore-this: 9fbf48988602c5ae65a695bb3dce5a1f ] [add destructor for person type Dougal Stanton **20101018190511 Ignore-this: b2e3b658e2c3587d35f68b9744b59d2f ] [strip everything out Dougal Stanton **20101018190542 Ignore-this: b1e2b8711c93bd053e67813a7a6262e5 ] [new location file, folding in location of characters Dougal Stanton **20101018190623 Ignore-this: 3ab5f71d9059c346042f52209b9d87cf ] [update readme Dougal Stanton **20101018191519 Ignore-this: 7e29be7b6924dd0439d6052f7438026f ] [add module diagram Dougal Stanton **20101018191908 Ignore-this: 28cc6b87f44a2b3283380159f8fe5201 ] [start layout module Dougal Stanton **20101019003551 Ignore-this: f2bd4d85b3689f718c15118a318f1e04 ] [Create radial arms from centre point of speaker Dougal Stanton **20101019124755 Ignore-this: b87e0d5696d97d5180f9f823d700ded0 ] [Add geometry module and expand estimated text size Dougal Stanton **20101021005044 Ignore-this: f9a45d45e92ede8be28693239d570e91 ] [dfs to find first suitable position for all text Dougal Stanton **20101021005208 Ignore-this: 19dd5bd39c8f74e21c5efd3a4bfb0ed3 ] [Add todo for better arrangement of arms Dougal Stanton **20101022140402 Ignore-this: 460909553b87bb74b684da202241da0b ] [Fix positions of all text using estimated sizes Dougal Stanton **20101023165048 Ignore-this: 82a26ba685b7e8cdcd4fa544b9fe003a We return the first working solution so the value of this depends largely on how good `estimate` (guess space needed for given text box) function is. ] [Add optional background image size to panel Dougal Stanton **20101023180842 Ignore-this: 35784224b54b48256014ed97fded53aa ] [Rename Pane to Panel Dougal Stanton **20101023181435 Ignore-this: d524cd64a2c7164b4672e31573a06116 ] [Remove simulated annealing code Dougal Stanton **20101024112717 Ignore-this: 23958c198305b6094acb27e0741d8bdf ] [Add comic drawing primitives for bubbles and text Dougal Stanton **20101024204508 Ignore-this: 4b7e91ec49a2bbad7cb30e9dd8837bee Still early days on the styling yet, and as usual bubbles are hard to get right. Speech bubble tails look absurd and don't even point in the right direction but thought bubbles are close enough. ] [Speech bubble without tail Dougal Stanton **20101025131302 Ignore-this: 2953cd4189ad831da45c6735edecbb5d ] [Write speech bubbles out to numbered images Dougal Stanton **20101025142825 Ignore-this: cb1d2b8973aa752e0c4cf389d1d594ec A short module to overlay the speeches and write out as an image. Untested so far... ] [Transform module to bind together steps Dougal Stanton **20101027002541 Ignore-this: 8f74a4f24f92463704c9c717f1ea8940 Various steps in the pipeline are hidden behind one transformation from Scene -> IO (Panel [Speech]) This process is repeated for each scene in the script. The picture writing doesn't happen until the next part because it depends on the script as a whole and other data not stored on a per-scene basis. ] [Fix bug in cast list lookup Dougal Stanton **20101101102229 Ignore-this: 4af7c11945f029b43e6e97a44a368349 Make all character names lower case before lookup. ] [Make font size a top level constant Dougal Stanton **20101101104048 Ignore-this: 6f4a43ddff242d8047e62f88191b7201 ] [Use font config for easy typeface names Dougal Stanton **20101101104115 Ignore-this: 27232eb69179f5e6007170356cfcaa77 ] [Derive Show instance for Panel for debugging Dougal Stanton **20101101105228 Ignore-this: ae135105951e81c505acca9ea4e928a1 ] [Pass in context directory for loading images, image maps Dougal Stanton **20101101105426 Ignore-this: d96a517e46fc15ea65bc7164ffbfe337 ] [Pass in source directory for bg images Dougal Stanton **20101101131408 Ignore-this: c39d88aebd552f488aa465ceac9787d ] [Front end, appears to work with single panels Dougal Stanton **20101101150017 Ignore-this: 7d3044fa63c622ff4664851359315239 Not tested with multi-panel comics yet but just wanted to push this out. Writes text off the left of the page for the normal conversation and fails to find good locations for all text with the long one-sided conversation, though this can be expected as it's too much text. ] [Rename Main module and update cabal file Dougal Stanton **20101101153919 Ignore-this: f9a0b4ed9191d92befac2c6544f3e14 ] [typo, cleanup Dougal Stanton **20101101235352 Ignore-this: bfdca1353597d6d9229f6c672cefe908 ] [Adapt one-sided conversation example with an insult Dougal Stanton **20101102182725 Ignore-this: 583426146210adb355af26cb955e461d ] [Make overlap testing more inclusive Dougal Stanton **20101102182818 Ignore-this: e79c53580a2644af957898ae1a637e39 ] [Put black margins around outside of each panel Dougal Stanton **20101102182919 Ignore-this: fd7eccebac7284c5f9af3922cb8a29b5 ] [Clean up drawings, make nicer rectangle borders Dougal Stanton **20101102183829 Ignore-this: 1717219d188b8658d5ac3cb4ce06d2a6 Text is better placed in better-proportioned bubbles with cute grey borders and there are lots more type signatures. ] [Better placement of bubbles at edge of screens Dougal Stanton **20101102184440 Ignore-this: 377413d100d27e04f689c2df15e04569 Allow bubbles to spill over a bit into the margin by some amount but no more. ] [version 0.1, extra rum for all the men Dougal Stanton **20101102185708 Ignore-this: 5d55ec7e1d1e1703f99267bb7e7d4c45 ] [TAG 0.1 Dougal Stanton **20101102185922 Ignore-this: f37d1102431275381d20e73b97dc4532 ] [update the README for v0.1 Dougal Stanton **20101103150403 Ignore-this: e99e89e8aec3f90c07265583ab4971c9 ] [Move common Panel structure to Script module and delete Sanitise module altogether Dougal Stanton **20101104003635 Ignore-this: ce85f34918e4b056ba97206449fc7a5a Pushes the --- minimal --- function of Sanitise.hs into the parsing stage and moves the data structure it was using into Script.hs. Every other file was depending on Sanitise because it exported `Panel a` though was largely useless otherwise. ] [add TODO file Dougal Stanton **20101108121036 Ignore-this: 488e4cd75bca15f3444d251c3597bbbd ] [update cabal file with todo list Dougal Stanton **20101108154214 Ignore-this: 92957f9aea3bbf2a7b7e47cf90b66a8a ] [write down name of flickr bindings Dougal Stanton **20101109130246 Ignore-this: 45d6d3e06f0184d5ca8d62899f42d02e ] [push parsing routines into separate module Dougal Stanton **20101112110204 Ignore-this: c17b34faebb3ac3f94f357b69f0cbf05 ] [push all haskell files into src directory Dougal Stanton **20101116183539 Ignore-this: f233ed53f551053871604bed930469f3 ] [Rounded rectangles for speech bubbles Dougal Stanton **20101123011103 Ignore-this: 4ecefc2a04d3d7b6bf880d8a26e91fd5 ] [add IsFrame instance for Located objects Dougal Stanton **20101129172847 Ignore-this: 413e4bfa5807443d5284c56fe246bcd3 ] [more complex Ord instance for boxes to simulate reading order Dougal Stanton **20101129172941 Ignore-this: 2e361dbea107595e168b8ae87bd7d4a1 ] [Use estimated size to determine bubble placement Dougal Stanton **20101129172958 Ignore-this: c114bfd3ebd7cb20d5e4f3834e71ef3 Use the full estimated Box rather than the midpoint, so we can avoid overlapping boxes etc. ] [update TODO file Dougal Stanton **20101129184200 Ignore-this: ee12d3743c73959b55486e7d45286037 ] [Push location and layout work into subdir Dougal Stanton **20101129190037 Ignore-this: e30d2dce18a84accbfd2ab6443bbd600 ] [Flickr uploading with tag support Dougal Stanton **20110106153538 Ignore-this: 52bffae2f6b43f1c9c5ea9f3eb6fd52 Upload images to flickr, with title, description and tags. Default tags include 'comicbake' and 'webcomic' but user can add others. Tagging is done as a separate action because there's a bug in hsflickr uploader that causes failure when non-empty tag list is included with upload data. ] [update TODO file Dougal Stanton **20110106164937 Ignore-this: cb71e0e6971d77e95b48708de1709e7d ] [Change versions and dates for 0.2 Dougal Stanton **20110122135122 Ignore-this: b1f631c9e757a1d90d186fc45f2bacea ] [TAG 0.2 Dougal Stanton **20110122135132 Ignore-this: 4d3385a19dd70dd61ad1923760fce318 ] [update README for publish command Dougal Stanton **20110122171841 Ignore-this: ee1b68e80f132443027139dd30240818 ] [Enforce dependency on parsec < v3 Dougal Stanton **20110203182711 Ignore-this: 69ce030f71482f80d1927791874fbc29 ] [Rewrite and simplify script parser Dougal Stanton **20110203182743 Ignore-this: d05dd4a2899d2072be44b511eed27645 Totally rewrote the parser to make better use of Parsec, provide better error messages and take fewer lines to do it in. The file format is simpler to use and slightly more flexible to write for script authors too. ] [include the preamble in README Dougal Stanton **20110203214008 Ignore-this: 1d8c37266e38ac0b5e5497d94bc59fe6 ] [amend TODO list Dougal Stanton **20110203234126 Ignore-this: 2807a6d09275c8b085f301755b9b1036 ] [increase fudge factor when centring text Dougal Stanton **20110205145036 Ignore-this: f243a61a100a5b88048ed10673a9a230 ] [set flickr metadata after successful upload Dougal Stanton **20110205153259 Ignore-this: fddb0b4b471a2d7a817d6ee437ddd73d ] [update TODO Dougal Stanton **20110207002406 Ignore-this: 74ac7331f0431ebb92f5847d88d8548c ] [Remove Scene export from script parser Dougal Stanton **20110207161810 Ignore-this: a4dd313ff9b447dfa0c8d071e3de40ec ] [comments and type signatures in Pix Dougal Stanton **20110207162503 Ignore-this: 93b220911c795e6e32b053fc794bcd39 ] [Move graphics modules into subdirectory Dougal Stanton **20110207174543 Ignore-this: eeda80f9bc34ecd38b61fdd160e2c8b1 ] [Allow setting font name, colour and size for all text Dougal Stanton **20110208234615 Ignore-this: 1c489fd3b66c97b4d0364bda2a48eb6c ] [update TODO regarding metadata Dougal Stanton **20110209124758 Ignore-this: 3618790654b97773eab595e185cda180 ] [First attempt at title and author on comic Dougal Stanton **20110209204030 Ignore-this: b15beaca0beae075049e395c9582a000 ] [Replace ragbag metadata types with Info container Dougal Stanton **20110209220217 Ignore-this: adb111e9f9efb0abf6b3056f3efed445 Wide-ranging changes to integrate Info type into parser and flickr uploader. ] [Clean up parser with Info container Dougal Stanton **20110209221438 Ignore-this: 7ad761e2fe1ac0f1658ffb48f6d0f914 ] [Fix comment parser for multiple key/value pairs Dougal Stanton **20110313223953 Ignore-this: c133f25a871319c079b59eda043833af ]