<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2171197221666147351</id><updated>2011-07-28T21:03:36.999+01:00</updated><category term='Visual Studio'/><category term='YACC'/><category term='User Interface'/><category term='CoreGraphics'/><category term='Function Pointers'/><category term='Unit Test'/><category term='XML'/><category term='TrueType'/><category term='Core Foundation'/><category term='MacApp'/><category term='Structured Storage'/><category term='OSX'/><category term='LEX'/><category term='XCode'/><category term='C++'/><category term='jcalg1'/><category term='Assembler'/><category term='ATSUI'/><category term='Unicode'/><category term='Carbon'/><category term='QuickTime'/><category term='MFC'/><category term='POLE'/><category term='STL'/><category term='Core Animation'/><category term='Debugging'/><category term='Cocoa'/><category term='gcc'/><category term='CoreText'/><category term='JavaScript'/><category term='Boost'/><category term='Image IO'/><category term='Source Code Management'/><title type='text'>Cello - a port from MFC to OSX</title><subtitle type='html'>This blog is a personal diary of a project to port Cello, an MFC based application, to OSX and Cocoa.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default?start-index=101&amp;max-results=100'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>115</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4722522495716376550</id><published>2010-04-11T17:00:00.003+01:00</published><updated>2010-04-11T17:02:35.645+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Using your own Undo Stack in Cocoa</title><summary type='text'>Having finished the Insert Frame UI have been connecting the first command Cello. This was something that proved surprisingly easy. The trick seems to be to subclass NSUndoManager and then yo use this as an adaptor for the existing undo system. I have installed my custom undo manager in my NSDocument makeWindowControllers method. Do this and magically it "just works".The methods I have </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4722522495716376550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4722522495716376550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4722522495716376550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4722522495716376550'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/04/using-your-own-undo-stack-in-cocoa.html' title='Using your own Undo Stack in Cocoa'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/S8HybZxpdhI/AAAAAAAAANA/sBgRZPDQKuU/s72-c/Picture+43.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2601535635788026743</id><published>2010-04-07T20:42:00.005+01:00</published><updated>2010-04-07T21:12:01.720+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Animation'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>iCal-like popup window Part II - MAAttachedWindow and CoreAnimation</title><summary type='text'>Looking closely at the iCal dialog it behaves quite differently from my first cut - what it does is to scale an image of the dialog from a single starting point to something slightly bigger than the final size and then back down to final size. There is a movie of this on my previous post. This gives an appearance like it over-scales and snaps back. To me this is really good because that sort of "</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2601535635788026743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2601535635788026743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2601535635788026743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2601535635788026743'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/04/ical-like-popup-window-part-ii.html' title='iCal-like popup window Part II - MAAttachedWindow and CoreAnimation'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/S7zjV6WmswI/AAAAAAAAAM4/wthFeN-NysI/s72-c/Picture+42.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8106217254187052968</id><published>2010-03-31T21:29:00.009+01:00</published><updated>2010-04-07T20:43:53.704+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Animation'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>iCal-like popup window Part I - MAAttachedWindow and CoreAnimation</title><summary type='text'>I have been working on animating the insert frames window in the same way that the iCal window animates. The iCal window does not just appear but instead sort of grows out of the point that you double clicked in.  




It is a really nice effect - however rather than the 10 minuets (or so) I thought it would take to deploy it - in actual fact it has taken me a little while to get to the bottom of</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8106217254187052968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8106217254187052968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8106217254187052968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8106217254187052968'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/03/ical-like-animated-window.html' title='iCal-like popup window Part I - MAAttachedWindow and CoreAnimation'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2720027219474877679</id><published>2010-03-17T08:04:00.007Z</published><updated>2010-03-17T08:10:32.180Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Non Modal Dialogs</title><summary type='text'>I am at the point where I need to add a dialog that appears when he user wants to insert frames. the dialog is quite simple - a popup and a field. The normal way of presenting this to the user is with a modal dialog - or its close cousin the sheet. For me as a user modal dialogs are just not that nice. Suddenly "bang" there is a dialog. It is rarely where you want it and it interrupts your flow. </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2720027219474877679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2720027219474877679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2720027219474877679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2720027219474877679'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/03/non-modal-dialogs.html' title='Non Modal Dialogs'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S6CNR9XHUXI/AAAAAAAAAMo/p3eUmOh8GmQ/s72-c/Picture+39.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2338457595468785099</id><published>2010-03-07T22:04:00.005Z</published><updated>2010-03-08T05:59:33.257Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Inline editing - NSTextView and the mysterious 5px margin</title><summary type='text'>The PC version of cello has a dialog box to edit labels. You can, using a contextual menu, add a label or edit a label. Deleting a label is a matter of editing the label and removing it's text.A more OSX way of handling the editing of a label is to be able to edit inline. The idea is that if you double click on a label then you get a text cursor in the label - and you edit the name inline.To </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2338457595468785099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2338457595468785099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2338457595468785099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2338457595468785099'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/03/inline-editing-nstextview-and.html' title='Inline editing - NSTextView and the mysterious 5px margin'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5Ye7q8Jvgjg/S5Qj1FigjyI/AAAAAAAAAMY/fpete_1T4FI/s72-c/Picture+29.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-477873873130873343</id><published>2010-03-07T15:30:00.007Z</published><updated>2010-03-07T15:53:08.229Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacApp'/><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>performClickWithFrame, small menus and Señor Calviño</title><summary type='text'>An advantage that MacApp had over Cocoa was that you got the source code. My experience of MacApp was that it was far more buggy but having the code meant that you could see how things work and (of course) fix bugs. Cocoa seems rather bug free - but when you find a bug you have no option but to work around it. I am not pining for the days of MacApp, things move on, Cocoa is very, very good - but </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/477873873130873343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=477873873130873343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/477873873130873343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/477873873130873343'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/03/performclickwithframe-small-menus-and.html' title='performClickWithFrame, small menus and Señor Calviño'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/S5PHoQW1IQI/AAAAAAAAALw/HsBBm9fQbXI/s72-c/Picture+41.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-9214219637513099771</id><published>2010-03-06T22:21:00.006Z</published><updated>2010-04-07T20:46:48.639+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Workaround - Crash in NSPopUpCell performClickWithFrame:inView:</title><summary type='text'>I have been working on contextual menus for the time line. Contextual menus appear to be quite straight forward. If you don't want your contextual menus customized with whatever can add to contextual menus you create a NSPopUpCell - this is described in Apple's developer documentation. What you need to is nicely covered and well explained in Jesper's blog. Jesper kindly even gives you a category </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/9214219637513099771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=9214219637513099771' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/9214219637513099771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/9214219637513099771'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/03/workaround-crash-in-nspopupcell.html' title='Workaround - Crash in NSPopUpCell performClickWithFrame:inView:'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7842265508065599089</id><published>2010-03-03T08:06:00.002Z</published><updated>2010-03-06T22:30:41.429Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Poof - Drag Deleting Items in Cocoa</title><summary type='text'>OSX has an idea of drag-deleting items in the UI. You can see this in the dock amoungst other places - drag an item out the dock - and the cursor changes to a pointer adorned witha  cloud. Release and "Poof" the item disappears with a small animation and a sound. It is cool and intuative. It works well when moving items does not cause a scroll. I have got used to the same way of deleteing </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7842265508065599089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7842265508065599089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7842265508065599089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7842265508065599089'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/03/poof-drag-deleting-items-in-cocoa.html' title='Poof - Drag Deleting Items in Cocoa'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1115201442178573671</id><published>2010-03-01T21:48:00.007Z</published><updated>2010-03-01T22:04:15.253Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>TimeLine view - Labels</title><summary type='text'>I am continuing to work on the header of the timeline. In addition to showing the current time frame and a selection the timeline can show labels and actions. I have been working on the visualization of labels. In the PC version of Cello the labels are shown as flags.The flags are named points in the timeline. I have taken this in the OSX Cello and changed it very slightly. Keeping the flags I </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1115201442178573671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1115201442178573671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1115201442178573671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1115201442178573671'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/03/timeline-view-labels.html' title='TimeLine view - Labels'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/S4w4EzLk2yI/AAAAAAAAALY/KxJ61M9cH9o/s72-c/pc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7729296866669389474</id><published>2010-02-25T22:01:00.005Z</published><updated>2010-02-25T22:06:57.588Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>TimeLine view - header</title><summary type='text'>I have been working on the timeline header view. In Cello this is called the FrameView as it contains details of fime frames. I have just got the selection working. The selection normally shows a single frame - the current frame, but it is possible to select a contiguous strip of frames as well.Before starting work on the selection I once again had a look at CocoaTron NSTableView to see how the </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7729296866669389474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7729296866669389474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7729296866669389474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7729296866669389474'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/02/timeline-view-header-view.html' title='TimeLine view - header'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/S4bznj275zI/AAAAAAAAALA/DwFTnPeiCnY/s72-c/Picture+29.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-6317564252381594911</id><published>2010-02-19T18:53:00.003Z</published><updated>2010-02-19T18:58:06.184Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Drag resizable columns in a headerless NSTableView</title><summary type='text'>Currently table headers are responsible for handling the dynamic resizing of table columns. I have needed to make it possible to resize table columns from within the table - so the idea is that you will be able to:move your mouse to the divider between two columns the cursor will change to indicate that you can resize the columnclick and drag and your column will resize.I already have a </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/6317564252381594911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=6317564252381594911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6317564252381594911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6317564252381594911'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/02/drag-resizable-columns-in-header-less.html' title='Drag resizable columns in a headerless NSTableView'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1460376782116610229</id><published>2010-02-17T19:11:00.003Z</published><updated>2010-02-18T07:54:57.171Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Synchronizing the selection in two NSTableViews</title><summary type='text'>I have been looking at a problem of synchronizing the selection across two NSTableViews. It took a few attempts to come to a solution that worked as I wanted it to. The idea is to have two table views with the same number of elements - as soon as you make a selection in one the other one updates to show the same items selected.My first port of call was to hook into the tableViewSelectionDidChange</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1460376782116610229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1460376782116610229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1460376782116610229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1460376782116610229'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/02/synchronizing-selection-in-two.html' title='Synchronizing the selection in two NSTableViews'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8257622511367976244</id><published>2010-02-15T21:33:00.002Z</published><updated>2010-02-15T21:41:42.873Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Interface Builder</title><summary type='text'>Working with an application framework has a few parts - there is the first staggering steps of familiarity and the kind of awkwardness you have because of the difference between what you knew before and what you are looking at. Then there is the familiarity when you know more-or-less how to do what you did before and then there is that time a while later when you sort of "get it". This part is </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8257622511367976244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8257622511367976244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8257622511367976244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8257622511367976244'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/02/interface-builder.html' title='Interface Builder'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2095920840359518323</id><published>2010-02-04T22:18:00.001Z</published><updated>2010-02-04T22:20:54.415Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>BWToolKit</title><summary type='text'>I have downloaded and built BWToolKit by Brandon Walkin. This is a framework that extends the existing components that are available in Inerface Builder. It is of particular interest to me at the moment as it contains an improved splitter. The BWSplitView is a subclass of the NSSplitView that handles improvements like the splitter collapsing, max min sizes etc. BWToolKit comes with interface </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2095920840359518323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2095920840359518323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2095920840359518323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2095920840359518323'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/02/bwtoolkit.html' title='BWToolKit'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-9180326344477414205</id><published>2010-01-17T18:39:00.004Z</published><updated>2010-01-17T18:54:32.285Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>Moving MFC icons to Cocoa</title><summary type='text'>Working my way through the timeline MFC to Cocoa conversion I have once again bumped up against graphic resources. Various components in the UI have graphic resources (icons). Back when I was getting the basic engine to work I compiled out all things of this ilk with a huge amount of other things with a #define _NO_UI. A part of my approach is that the structure of the new UI follows the PC </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/9180326344477414205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=9180326344477414205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/9180326344477414205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/9180326344477414205'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/01/moving-mfc-icons-to-cocoa.html' title='Moving MFC icons to Cocoa'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1NcHNHzHVI/AAAAAAAAAKU/lrG5DAKFzws/s72-c/Picture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7891548509537006623</id><published>2010-01-11T21:16:00.003Z</published><updated>2010-01-11T21:22:33.790Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>Mutating MFC to Cocoa</title><summary type='text'>I am making progress converting the view hierarchy of the timeline to cocoa. In the about face I am working through the classes and interfaces that are defined in MFC and attempting a mechanical conversion where possible. In my first cut I do the following:Mutate the all 'interface' definitions to protocols.Mutate all pure virtual base classes into protocols.Mutate all other classes as objective </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7891548509537006623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7891548509537006623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7891548509537006623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7891548509537006623'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/01/mutating-mfc-to-cocoa.html' title='Mutating MFC to Cocoa'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/S0uVdvxgVxI/AAAAAAAAAKE/HwDwlBc6m_U/s72-c/Picture+27.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-5249474374085495829</id><published>2010-01-03T00:28:00.005Z</published><updated>2010-01-09T21:19:16.476Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>C++ Observers in Objective C</title><summary type='text'>Cello has various notifications that are posted to observers. This is a good and fine thing - the observers are generally UI components and in the PC version of Cello are C++ classes. The form is that through multiple inheritance of a mix-in class a class becomes an observer. It overrides the observation methods and handles the notifications. The rub comes with Objective-C. Under OSX all the UI </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/5249474374085495829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=5249474374085495829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5249474374085495829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5249474374085495829'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/01/c-observers-in-objective-c.html' title='C++ Observers in Objective C'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1035746754061755395</id><published>2010-01-02T14:46:00.002Z</published><updated>2010-01-02T14:51:13.788Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>TimeLine - an about-face</title><summary type='text'>Sometimes programming is about heading down a blind alley. I guess that thing to do in these situations is to know when to call it a day and head back. So this is what I am doing with my current work on the timeline. So why the about face? What I was doing with the Timeline was to develop a slot in replacement for something a bit like a NSTableView but with all the capabilities rewired for a </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1035746754061755395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1035746754061755395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1035746754061755395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1035746754061755395'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2010/01/timeline-about-face.html' title='TimeLine - an about-face'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-9209344539411268071</id><published>2009-12-26T18:19:00.005Z</published><updated>2009-12-26T22:43:30.191Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>TimeLine view - rollovers</title><summary type='text'>Each row of the TimeLine header view has two areas that are active. One is the drawMode and has a popup - the other represents the locked status of an item. These appear as graphics in the TimeLine header. I have decided to make these active areas distinct by making them behave as rollovers. The effect that I am looking for is quite simple - as the mouse goes over the active area I want to draw a</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/9209344539411268071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=9209344539411268071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/9209344539411268071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/9209344539411268071'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/12/rollovers-in-row-header.html' title='TimeLine view - rollovers'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SzZUC0xMnOI/AAAAAAAAAJ0/qPW4qnVOQd8/s72-c/Picture+32.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7768274381202014214</id><published>2009-12-18T21:05:00.008Z</published><updated>2009-12-30T22:21:13.039Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>TimeLine view - making the header active</title><summary type='text'>In the TimeLine view the header is not a passive information-only structure it is active.The text is editable.The "Lock" icon works as a checkbox.The "Draw Mode" icon is a popup menu with four states.This is what one of the popup menus looks in the windows version if Cello.The way that I plan to accomplish these active areas are by using subclasses of NSCell and friends. There is, for example, a </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7768274381202014214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7768274381202014214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7768274381202014214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7768274381202014214'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/12/timeline-view-making-header-active.html' title='TimeLine view - making the header active'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5Ye7q8Jvgjg/SyvyNM3JaqI/AAAAAAAAAJc/JnSIPnXVQWs/s72-c/Picture+25.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4082614724394022372</id><published>2009-12-13T16:46:00.006Z</published><updated>2009-12-13T17:00:25.752Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>TimeLine view - header with icons</title><summary type='text'>I have added the drawing of icons to the header row. I have taken the existing graphics from the PC version and quite quickly converted them to individual tiff images in photoshop. I am for the moment just reusing the PC images. When Cello is finished they will need reworking as they don't have that OSX feel. My thought is to hand this part of the project over to someone else - it really is </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4082614724394022372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4082614724394022372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4082614724394022372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4082614724394022372'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/12/timeline-view-header-with-icons.html' title='TimeLine view - header with icons'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SyUcOShvJgI/AAAAAAAAAJU/jpkoqYpFxyY/s72-c/Picture+29.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2467287024509196147</id><published>2009-12-12T17:10:00.004Z</published><updated>2009-12-12T17:17:01.894Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Cocoa and Drawing truncated text</title><summary type='text'>To properly allow for long names of objects in the time-line I need to draw truncated text.Untruncated TextWhat I mean is that I want to truncate the text if the area is to small for the text and then to have some ellipses that show where the truncation occurs. This was second nature to me in my days as a ToolBox (Carbon) programmer but fathoming it out under Cocoa tool a while. Whatever I tried </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2467287024509196147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2467287024509196147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2467287024509196147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2467287024509196147'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/12/cocoa-and-drawing-truncated-text.html' title='Cocoa and Drawing truncated text'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/SyPO0g6xWtI/AAAAAAAAAJE/6eZKPam0DD4/s72-c/Picture+27.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-5188657705334761401</id><published>2009-12-12T16:32:00.004Z</published><updated>2009-12-12T16:45:32.723Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>TimeLine view - header regions</title><summary type='text'>Working on the TimeLine view I have started getting the row headers to draw. I am stepwise refining the row header drawing until I have the row headers drawing correctly. The PC version of cello draws row headers like this:So my start is to take the single rectangle for a row and to divide it into four parts. The text part will grow and shrink horizontally - the other parts are fixed (they will </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/5188657705334761401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=5188657705334761401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5188657705334761401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5188657705334761401'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/12/timeline-view-header-regions.html' title='TimeLine view - header regions'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5Ye7q8Jvgjg/SyPGg0neYkI/AAAAAAAAAI0/bfdSymDCszk/s72-c/rowHeadersWin.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1088249478273955810</id><published>2009-12-04T19:50:00.006Z</published><updated>2009-12-12T16:51:42.086Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>NSScrollView - problems</title><summary type='text'>I have been having a strange problem scrolling in the TimeLine view. The issue is down to my understanding of coordinate spaces under "normal" (not flipped) circumstances in cocoa. The coordinate space is much as I expect - the bottom left corner is (0, 0). However when you come to NSScrollView things are a little strange. If the position of the content view also starts from the bottom left </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1088249478273955810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1088249478273955810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1088249478273955810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1088249478273955810'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/12/nsscrollview-problems.html' title='NSScrollView - problems'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/Sxlomo9ngzI/AAAAAAAAAIk/2H_lbsUAq2c/s72-c/TimeLineTestScreenSnapz001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-6331977886474791365</id><published>2009-12-03T21:29:00.006Z</published><updated>2009-12-03T21:55:56.058Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>TimeLine - sketching out more</title><summary type='text'>I am slowly shapping up the timeline. I am working with a scratch target in the main project and doing occasional Git commits. The commits are little more than line in the sand that I can undo to. My approach is to start simple and to refine slowly.Basic Topology (header areas)Starting with the basic ytopology I refined it by adding NSScrollViews. Basic topology (with scrolling)The final shot of </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/6331977886474791365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=6331977886474791365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6331977886474791365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6331977886474791365'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/12/timeline-sketching-out-more.html' title='TimeLine - sketching out more'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/Sxgw9BQSMzI/AAAAAAAAAIM/luIXhitTTFM/s72-c/TimeLineTestScreenSnapz004.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8572832810604107367</id><published>2009-11-23T21:28:00.006Z</published><updated>2009-11-23T21:49:00.350Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>TimeLine view - first brush strokes</title><summary type='text'>I have started implementing the TimeLine view - and implementing it from the ground up. My approach is to start with the basic topology and then to add flesh to the bones. The PC view has row labels of user determined width. I can kick this off in a small sample project - I should be able to get the basic structure of what I need working outside of Cello. So I started by adding a new (temporary) </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8572832810604107367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8572832810604107367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8572832810604107367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8572832810604107367'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/11/timeline-view-first-brush-strokes.html' title='TimeLine view - first brush strokes'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/Swr_Y44OXfI/AAAAAAAAAIE/0ySMzCsP9Tk/s72-c/TimeLineTestScreenSnapz001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3682274952072677491</id><published>2009-11-22T15:49:00.003Z</published><updated>2009-11-22T15:52:03.151Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>NSTableView vs MBTableGrid - the verdict</title><summary type='text'>I have spent some time looking at NSTableView and also the open source MBTableGrid. What I have been doing is playing around with them in test applications to try and get a measure of the two approaches. In the end I have decided to write my own view from the ground up. Looking at the MBTableGrid example has given em a really good idea of what it will take to do it - and the work will not be </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3682274952072677491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3682274952072677491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3682274952072677491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3682274952072677491'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/11/nstableview-mbtablegrid-verdict.html' title='NSTableView vs MBTableGrid - the verdict'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4243507326582300369</id><published>2009-11-19T22:11:00.005Z</published><updated>2009-11-22T15:51:17.257Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>NSTableView vs MBTableGrid - the trial</title><summary type='text'>The main cello UI is comprised of three views, FrameView TimeLine and ActionView. Together these views comprise the majority of the editing functionality. My intention was to start with the FrameView. The FrameView is used to draw the the items at a given point in time. So when you sketch, say, a box you do this in the FrameView. It seemed like the most important view to start with. There is, </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4243507326582300369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4243507326582300369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4243507326582300369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4243507326582300369'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/11/implementing-first-view.html' title='NSTableView vs MBTableGrid - the trial'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SwXDINCUIII/AAAAAAAAAH0/2rMSAAaz2tU/s72-c/Picture+23.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7111198213636627682</id><published>2009-11-16T21:11:00.003Z</published><updated>2009-11-16T21:25:27.540Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>NSDocumentController - Reusing a single window across multiple documents</title><summary type='text'>A further twist to having a single document visible at any one time is that I would like to keep a single window and reuse it. The way I have done this is as followsWhen I get the NSApplicationWillFinishLaunchingNotification I create the window controller and window. I do this by reading in a nib file that has my subclass of a window controller and a window. In  the makeWindowControllers method </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7111198213636627682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7111198213636627682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7111198213636627682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7111198213636627682'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/11/nsdocumentcontroller-reusing-single.html' title='NSDocumentController - Reusing a single window across multiple documents'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2937704479945553338</id><published>2009-11-15T20:52:00.005Z</published><updated>2009-11-15T21:00:09.058Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>NSDocumentController - Maintaining a single document</title><summary type='text'>I have been trying to figure out the best way to structure things to support the concept of the "main frame". Under Windows applications generally seem to have a main frame. This is the single key window that is central to the application. The OSX world is different - you generally have multiple windows one for each document. As a Mac user, now working windows much of the time. I find the </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2937704479945553338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2937704479945553338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2937704479945553338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2937704479945553338'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/11/nsdocumentcontroller-maintaining-single.html' title='NSDocumentController - Maintaining a single document'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4317271693363506485</id><published>2009-11-11T21:45:00.007Z</published><updated>2009-11-11T22:06:28.995Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Kon and Bal - NSWindowController won't show my window</title><summary type='text'>I am trying to rationalized the Windows idea of a MainFrame with the Cocoa document model, and in that deal with the meshing of C++ and Cocoa. Out the box Cocoa will give you a window per document - but infinitely configurable cocoa gives you the tools to skin the cat as you want it.What I have been trying to do is get my C++ MainFrame to create a NSWindowController (subclass) and to create and </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4317271693363506485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4317271693363506485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4317271693363506485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4317271693363506485'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/11/kon-and-bal-nswindowcontroller-wont.html' title='Kon and Bal - NSWindowController won&apos;t show my window'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2935613268873515576</id><published>2009-11-02T22:22:00.000Z</published><updated>2009-11-02T22:25:27.815Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Meshing Cocoa with C++</title><summary type='text'>One of the key issues I am looking at is the problem of having a code base that is written as C++ classes and meshing that with an application framework that is written in Objective C. My rough plan at the moment is to have a parallel Objective C object for each C++ object that appears directly in the UI. So, for example, there is an C++ object in Cello that is what is called the FrameView. This </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2935613268873515576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2935613268873515576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2935613268873515576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2935613268873515576'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/11/meshing-cocoa-with-c.html' title='Meshing Cocoa with C++'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2366211274267837189</id><published>2009-11-01T19:50:00.002Z</published><updated>2009-11-01T19:55:07.710Z</updated><title type='text'>Your document contents here</title><summary type='text'>This is a screen shot of the first file that has been opened by the cello application. The application will open a cello document that has been created in the PC version of cello. It openes the document much as the test application did but it is wired to the beginnings of a "propper" application.</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2366211274267837189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2366211274267837189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2366211274267837189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2366211274267837189'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/11/your-document-contents-here.html' title='Your document contents here'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/Su3mxKzhRWI/AAAAAAAAAHs/LdJMI4kiAxs/s72-c/Picture+21.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3493124499286984870</id><published>2009-10-18T19:04:00.007+01:00</published><updated>2009-10-18T22:18:00.378+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><title type='text'>Debugging Individual CPlusTestRig Test Cases</title><summary type='text'>Having got the unit tests working in the debugger I don't really want all the tests to be executed each time I run the debugger. I just want to work with the problem test. The easiest method I know of is just linking in the tests that you want. It is what I have used in the past when fixing unit tests (prior to getting the debugger to work I used NSLog calls and just looked at the output - my </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3493124499286984870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3493124499286984870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3493124499286984870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3493124499286984870'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/10/having-got-unit-tests-working-in.html' title='Debugging Individual CPlusTestRig Test Cases'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/SttY1nJeTxI/AAAAAAAAAHk/brorpcHW_x0/s72-c/Picture+20.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7505329793650431046</id><published>2009-10-14T22:07:00.012+01:00</published><updated>2009-10-18T22:22:10.314+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><title type='text'>Debugging CPlusTestRig UnitTests</title><summary type='text'>Having started work on the user interface I am doing a fair bit of reorganizing. In this reorganization I have been changing the way that UI related components are being registered. What has happened is that in the early stages of development I had roughed-out stubs installed as the needed UI components - but these no longer load. The upshot of this is that I have made the first progress am ready</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7505329793650431046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7505329793650431046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7505329793650431046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7505329793650431046'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/10/debugging-cplustestrig-unittests.html' title='Debugging CPlusTestRig UnitTests'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/StZDYNsE01I/AAAAAAAAAHc/H8MMknAVifA/s72-c/Picture+13.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-649178089708021228</id><published>2009-07-25T17:37:00.000+01:00</published><updated>2009-07-25T17:38:37.509+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Fun and games with owner counts</title><summary type='text'>Working on the UI my current short-term target is to open a file. The results of this will not be ostensibly much different from the test bed application which could open, save and publish a file except that it involves putting in the beginnings of a skeleton for the UI of the final app. The skeleton is a mix of Cocoa C++. There are C++ subclasses of existing Cello objects and Cocoa wrappers.  I </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/649178089708021228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=649178089708021228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/649178089708021228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/649178089708021228'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/07/fun-and-games-with-owner-counts.html' title='Fun and games with owner counts'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-5101255728220068491</id><published>2009-06-29T22:12:00.002+01:00</published><updated>2009-06-29T22:15:34.411+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>UI - Initial Approach</title><summary type='text'>After a bit of a break I have started picking up on Cello again, once again I have some free evenings.Having got to the stage where I can open and publish test files I now have start the serious work of the user interface. My current thoughts are to start with the existing view hierarchy and to use it to wrap cocoa views. For example there is a time-line view. This view manages a time-line and </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/5101255728220068491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=5101255728220068491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5101255728220068491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5101255728220068491'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/06/ui-initial-approach.html' title='UI - Initial Approach'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3765832611709783290</id><published>2009-03-25T20:22:00.003Z</published><updated>2009-03-25T20:26:54.691Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='XCode'/><title type='text'>XCode - Development Version Numbers</title><summary type='text'>In the Cello development I have numbered each checkin. This checkin number is recorded in a tag-line in each file that is checked in, and in the checkin comment (or message). Once I have reached the stage of building the test applications I have been careful to build a version of the test application with the build number and archive it. The idea behind this is that when I find a regression or </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3765832611709783290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3765832611709783290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3765832611709783290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3765832611709783290'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/03/xcode-development-version-numbers.html' title='XCode - Development Version Numbers'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/ScqTGic9YjI/AAAAAAAAAGY/oZgzJbZlmHY/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2319586965209338818</id><published>2009-03-22T11:54:00.004Z</published><updated>2009-03-25T20:09:01.721Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Source Code Management'/><title type='text'>The Joy of GIT</title><summary type='text'>Once you start getting accustomed to GIT it becomes quite addictive. I have started using GIT on another project. Despite using use only a fraction of it I have found it so fast and flexible that I have decided to move the Cello project over to GIT.To install Git on your machine the easiest way to go is to use MacPorts. MacPorts is a cunning system that will install a package and all it's </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2319586965209338818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2319586965209338818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2319586965209338818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2319586965209338818'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/03/joy-of-git.html' title='The Joy of GIT'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7774189517072947234</id><published>2009-03-03T20:36:00.003Z</published><updated>2009-03-03T20:40:13.944Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>UI - BabySteps</title><summary type='text'>In building the UI I am planning to take baby-steps. There are two reasons for thisSmall steps are easierI have a tiny amount of spare timeAs things currently pan out I can only spare, at most, a couple of hours a week to work on Cello. A philosophy that I take when clearing the kitchen at home, a task that I find perpetually bewildering, is to do something productive with every action and not to</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7774189517072947234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7774189517072947234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7774189517072947234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7774189517072947234'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/03/ui-babysteps.html' title='UI - BabySteps'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-993580356101736011</id><published>2009-01-25T18:29:00.003Z</published><updated>2009-03-03T20:40:34.923Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='XCode'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>UI - Preparing for Power</title><summary type='text'>I had a friend who was in a member of the Revolutionary Communist Party and was  planning to attend a meeting optimistically entitled "Preparing for Power". At the time it really tickled me. and has become one of those wonderfull phrases that has stuck with me.So for my part I am "Preparing for UI". These are the small baby steps that are required to start doing something. I have split the </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/993580356101736011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=993580356101736011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/993580356101736011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/993580356101736011'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/01/ui-preparing-for-power.html' title='UI - Preparing for Power'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-6859920949765755899</id><published>2009-01-07T20:10:00.004Z</published><updated>2009-01-08T22:09:01.855Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='MacApp'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><title type='text'>Re-factoring</title><summary type='text'>Prior to starting on the UI I have been doing some re-factoring. I have read that the important thing when re-factoring is that the code still works. My experience supports this. The ideal situation is that you re-factor in small steps and intersperse these steps with running unit tests that will ensure that you haven't broken anything. In the case of Cello as most of the work I have done is for </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/6859920949765755899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=6859920949765755899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6859920949765755899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6859920949765755899'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2009/01/re-factoring.html' title='Re-factoring'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8267565919837252924</id><published>2008-11-20T22:50:00.001Z</published><updated>2008-11-20T22:50:45.578Z</updated><title type='text'>The end of sound</title><summary type='text'>[build 0114] I have reached the end of sound - so the files with sound (WAV and MP3) generated on the PC open and publish correctly.The next step is the user interface. However before that I will go back over the new code I have added and do a little cleaning and re-factoring. I am not planning anything big - just making sure that things like names are consistent, that the code is commented and </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8267565919837252924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8267565919837252924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8267565919837252924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8267565919837252924'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/11/end-of-sound.html' title='The end of sound'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4814286593579949995</id><published>2008-11-19T22:59:00.002Z</published><updated>2008-11-19T23:04:30.661Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><category scheme='http://www.blogger.com/atom/ns#' term='QuickTime'/><title type='text'>Sound - nearing the end</title><summary type='text'>I think I am nearing the end of sound. I have created a new class that is heavy based on Apple's SCAudioCompress sample code and the existing MFC WAV to PCM converter class. So what I have got is more-or-less a drop in replacement for the old class.The approach I took was to take Apple's  SCAudioCompress sample code and transformed it bit-by-bit, into the form I wanted, taking fairly small steps.</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4814286593579949995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4814286593579949995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4814286593579949995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4814286593579949995'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/11/sound-nearing-end.html' title='Sound - nearing the end'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1877498286566264766</id><published>2008-11-12T07:54:00.003Z</published><updated>2008-11-12T08:02:38.701Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><category scheme='http://www.blogger.com/atom/ns#' term='QuickTime'/><title type='text'>Sound - Debugging</title><summary type='text'>The biggest drawback for me when working with sound is that I don't know that much what I am doing. What I mean is that I have spent many years, for example, working with graphics, transformations etc. and I know the language, terminology and have encountered many problems. The upshot of this is that when working with graphics I have a context to put things into and looking through the code it "</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1877498286566264766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1877498286566264766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1877498286566264766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1877498286566264766'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/11/sound-debugging.html' title='Sound - Debugging'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SRqMEvOVPtI/AAAAAAAAAF8/pN_gEobTIRE/s72-c/pxpetergriffin.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2002366085061690672</id><published>2008-11-07T21:56:00.004Z</published><updated>2008-11-07T22:05:06.549Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>QTKit and boost</title><summary type='text'>I have started working on sound. Somewhere close to he start of the project I focused on getting the project to compile. The support for WAV files butted straight on to MFC so I compiled it out with a #define _NO_WAV. What it means is to work through this code I can remove the #define and work through the compile errors.The support for WAV files in Cello is quite simple. WAV is converted to PCM </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2002366085061690672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2002366085061690672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2002366085061690672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2002366085061690672'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/11/qtkit-and-boost.html' title='QTKit and boost'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-546524323830102231</id><published>2008-11-02T18:41:00.003Z</published><updated>2008-11-02T18:46:06.944Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='QuickTime'/><title type='text'>Canned Effects - complete</title><summary type='text'>[build 0096] I have completed working through all of the "Canned Effects", including the text effects, and they now work under OSX. Once I had completed the various problems with the handling of text it all fell out reasonably quickly. Getting the effects to work was little more than a handle turning exercise - get the files to compile, generate test files and test.The next step is to support </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/546524323830102231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=546524323830102231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/546524323830102231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/546524323830102231'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/11/canned-effects-complete.html' title='Canned Effects - complete'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8279496659549016711</id><published>2008-10-30T19:21:00.009Z</published><updated>2008-11-05T07:42:37.144Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><title type='text'>Understanding Fixes - Debugging</title><summary type='text'>As I work trough the text effects I make test files on the PC version so I can test on the OSX version. The test files are reasonably straight forward - I test the range of settings, use different styling and a mixture of paragraph and character styling. In this I came across a problem. The issue was a word based effect with a change of style within the word resulted in some characters being </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8279496659549016711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8279496659549016711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8279496659549016711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8279496659549016711'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/10/debgging-understanding-fixes.html' title='Understanding Fixes - Debugging'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5Ye7q8Jvgjg/SQoJf1lnazI/AAAAAAAAAFs/73oW9u1p4Bk/s72-c/Picture+19.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8962414263752211471</id><published>2008-10-25T19:30:00.006+01:00</published><updated>2008-10-29T21:13:07.802Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>Text Effects - Debugging rounding errors</title><summary type='text'>The first of the text effects is an effect where glyphs are swapped our randomly. Having fixed the more obvious (large scale) problem in the positioning (as described here) there was an outstanding more subtle bug in the positioning of the effect glyphs.One of my test files is based on some effect text that is precisely positioned on top of some normal text. When the effect ends the text come to </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8962414263752211471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8962414263752211471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8962414263752211471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8962414263752211471'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/10/text-effects-debugging-rounding-errors.html' title='Text Effects - Debugging rounding errors'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/SQNmLNTU8AI/AAAAAAAAAFg/lyPqCh-epaU/s72-c/Picture+12.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8993526554889469378</id><published>2008-10-23T22:15:00.006+01:00</published><updated>2008-10-29T21:14:12.405Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><title type='text'>Text Effects - Debugging bounds problems</title><summary type='text'>I have been looking at a strange problem where glyphs, when revealed by an animation, fail to redraw properly. What happens is when a part of an animation moves over a character shape the shape that is revealed sometimes fails to redraw. You can see this in the snapshot below - most obviously there is a bit missing from the A.When I first saw the problem I presumed that it was down to a bug in </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8993526554889469378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8993526554889469378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8993526554889469378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8993526554889469378'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/10/text-effects-debugging_23.html' title='Text Effects - Debugging bounds problems'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SQDpzkwzVzI/AAAAAAAAAFY/Xyf1ZfdzYRA/s72-c/Picture+11.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1897706403251473946</id><published>2008-10-21T18:13:00.004+01:00</published><updated>2008-10-21T18:33:51.916+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><title type='text'>Text Effects - Debugging</title><summary type='text'>Having implemented the Accessor class getting the base class and the first text effect to compile was reasonably easy. The first text effect is a glyph substitution effect where glyphs in text are replaced with random glyphs in a simple animation.After fixing a couple of crashes the output appeared to more or less work. To test the effect more thoroughly I overlaid the text with the effect </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1897706403251473946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1897706403251473946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1897706403251473946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1897706403251473946'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/10/text-effects-debugging.html' title='Text Effects - Debugging'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/SP4N0wtZ5CI/AAAAAAAAAFQ/QFQUSPsbU2c/s72-c/Picture+5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1335708482434406362</id><published>2008-10-16T22:53:00.005+01:00</published><updated>2008-10-18T07:53:59.990+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><title type='text'>Less is More</title><summary type='text'>The observation Less is More is an observation of Cello project that comes home time and time again. A considered path of least resistance seems generally to be the best course.For the past week or so I have been working on the text effects and I had sort of stalled. Cello is an after hours project so it is hard to get a stretch of more than a few hours together.  The text effects stalled because</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1335708482434406362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1335708482434406362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1335708482434406362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1335708482434406362'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/10/less-is-more.html' title='Less is More'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8145744521609380088</id><published>2008-10-05T14:15:00.006+01:00</published><updated>2008-10-05T20:50:05.224+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='Unicode'/><title type='text'>Managing TextBreakLocatorRef using Boost</title><summary type='text'>Since the birth of OSX new data types are based on Core Foundation. Core Foundation provides an owner-counted management of objects which allows for quite a natural, as well as simple, memory management. In C++ these are easily managed by boost intrusive_ptr (more details of which were posted here)My initial take on TextBreakLocatorRef was that it predated Core Foundation and as I wanted to be </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8145744521609380088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8145744521609380088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8145744521609380088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8145744521609380088'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/10/managing-textbreaklocatorref-using.html' title='Managing TextBreakLocatorRef using Boost'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/SOjQJyV4ASI/AAAAAAAAAFA/eyLGDbExqb8/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2936777852768106788</id><published>2008-10-05T11:24:00.003+01:00</published><updated>2008-10-05T11:28:52.199+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Unicode'/><title type='text'>Unicode Word Breaks - UCFindTextBreak</title><summary type='text'>Working through the various effects I have come quite quickly to text - so the holiday (the appearance of rapid progress) is over and it is back to text. I like text so all is right with the world.The text effects work on either lines of text, words within lines or letters. In the PC version of Cello there is no distinction between a letter and a glyph - however gunning everything through </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2936777852768106788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2936777852768106788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2936777852768106788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2936777852768106788'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/10/unicode-word-breaks-ucfindtextbreak.html' title='Unicode Word Breaks - UCFindTextBreak'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1816075968255869730</id><published>2008-10-01T20:52:00.004+01:00</published><updated>2008-10-01T20:58:51.891+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><title type='text'>Core Text - CTFontGetUnderlineThickness</title><summary type='text'>[build 0066] I have got the first five effects to work - that is I can open files that have the effect and publish them. My thought of a chance to make some rapid progress by avoiding text was short-lived. Having added text to the test files there were problems to work through.The effects deal with text as path shapes. That is internally they make a single shape out of the glyphs and then do </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1816075968255869730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1816075968255869730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1816075968255869730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1816075968255869730'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/10/core-text-ctfontgetunderlinethickness.html' title='Core Text - CTFontGetUnderlineThickness'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SOPVfxWvgDI/AAAAAAAAAE4/N6p4nlZXCtM/s72-c/Picture+20.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-561312929420409988</id><published>2008-09-30T07:12:00.008+01:00</published><updated>2008-10-05T20:52:13.612+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>Canned Effects</title><summary type='text'>[build 0062] Having got to the end of Text I found that Sprites, Gradients, Buttons and TimeLines fell out in a few hours. In some ways this is strange because progress has been pretty hard fought for with text. In getting the text to work I had to replace a font scalar, plumb in CoreText  - none of this is small beer. The Sprites, Gradients etc are little more than getting the files to compile -</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/561312929420409988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=561312929420409988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/561312929420409988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/561312929420409988'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/effects.html' title='Canned Effects'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/SOHDZZCxMaI/AAAAAAAAAEo/G4X-FBeJxQU/s72-c/Picture+3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7417093775986804126</id><published>2008-09-29T16:29:00.001+01:00</published><updated>2008-09-29T16:40:56.281+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><title type='text'>CoreText - Setting styles on empty AttributedStrings</title><summary type='text'>[build 0058] Text in Cello appears to be completed - for the moment at least.The last problem with text was something of a classic. Within Cello the text and style runs are stored as CFAttributedStrings. This works out really well as this is what CoreText consumes. The problem comes with empty strings. If you have an empty string then it is impossible to set any attributes on it. Also if you try </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7417093775986804126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7417093775986804126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7417093775986804126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7417093775986804126'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/coretext-setting-styles-on-empty.html' title='CoreText - Setting styles on empty AttributedStrings'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4758245855009620167</id><published>2008-09-25T07:10:00.002+01:00</published><updated>2008-09-25T07:23:10.114+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><title type='text'>CoreText Typography - Ligatures</title><summary type='text'>[build 0051] The great fight with text is slowly coming to a close. I have a few outstanding bugs before I move on to editable text but I can see the end.Ligatures appear correctly in the output.Having spent some time looking into glyphs and glyph codes ligatures are the easiest test case for non-standard glyphs because it is possible to type in normal letters like "f" and "i" in the PC version </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4758245855009620167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4758245855009620167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4758245855009620167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4758245855009620167'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/coretext-typography-ligatures.html' title='CoreText Typography - Ligatures'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SNsrZHTSV4I/AAAAAAAAAEg/MsacEI_heK0/s72-c/Picture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7399592929083496042</id><published>2008-09-24T07:49:00.006+01:00</published><updated>2008-09-24T20:28:29.255+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='TrueType'/><category scheme='http://www.blogger.com/atom/ns#' term='Unicode'/><title type='text'>CoreText - Accesing the CMAP CTFontGetGlyphsForCharacters</title><summary type='text'>CoreText provides the function CTFontGetGlyphsForCharacters that will give you a conversion from a letter to a glyph through the unicode CMAP.</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7399592929083496042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7399592929083496042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7399592929083496042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7399592929083496042'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/coretext-accesing-cmap.html' title='CoreText - Accesing the CMAP CTFontGetGlyphsForCharacters'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1500490250154409745</id><published>2008-09-21T23:24:00.005+01:00</published><updated>2008-09-28T16:04:18.740+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TrueType'/><title type='text'>Glyphs to Character Codes - revisited</title><summary type='text'>My original plan to map glyphs to character codes appears doomed. There main flaw in this plan is that it looks like the glyph names are not reliable - what I mean by this is that some glyphs do not have names that  can be mapped to a character code. For example the font "Li Song Pro" has glyph names names that apper to be based on glyph codes rather than character codes.At this point I  took </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1500490250154409745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1500490250154409745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1500490250154409745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1500490250154409745'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/glyphs-to-character-codes-revisited.html' title='Glyphs to Character Codes - revisited'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-6925515827135851379</id><published>2008-09-19T18:01:00.006+01:00</published><updated>2008-09-28T16:07:24.915+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><title type='text'>CoreText - Getting Glyph Names</title><summary type='text'>Looking at the published file and its log I can see that there is a problem with the character codes that Cello is publishing. The published file format expects character codes that are then mapped to glyph indexes. Cello is feeding the code glyph indexes, it works but it is not right and will cause problems in other places where text is used. If you are not too familiar with the difference - </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/6925515827135851379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=6925515827135851379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6925515827135851379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6925515827135851379'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/core-text-using-ctglyphinfogetglyphname.html' title='CoreText - Getting Glyph Names'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SNPbJlWEcmI/AAAAAAAAAEY/dHyF1-9ouk4/s72-c/MAYA-g-log-cal-D10-Ok.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4393342485704056790</id><published>2008-09-17T21:25:00.008+01:00</published><updated>2008-09-24T07:54:34.890+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><title type='text'>CoreText - Bold, Italic and CTFontCreateCopyWithSymbolicTraits</title><summary type='text'>[build 0047] The text publishing is slowly falling into place. I have managed to get to the bottom of most of the positioning problems. The side-by-side comparison shows publishing under OSX text is quite similar. The vertical positioning is a little different. Also under OSX the text is kerned - something that fell out from using Core Text.More complex example (an unpleasent combination of </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4393342485704056790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4393342485704056790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4393342485704056790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4393342485704056790'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/core-text-bold-italic-and.html' title='CoreText - Bold, Italic and CTFontCreateCopyWithSymbolicTraits'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SNFn8wM1IkI/AAAAAAAAAEI/TusthwkY2sA/s72-c/Picture+16.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3610687801487572667</id><published>2008-09-12T23:23:00.011+01:00</published><updated>2008-09-24T20:23:48.697+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><title type='text'>CoreText - flipped coordinates and glyph curves.</title><summary type='text'>Text output is requires partial fonts to be included in the file format. This is done by having the glyph outlines embedded in the file. As described earlier I am using Core Text to get the glyph outlines (see). Unfortunately (looking at the output) the outlines are flipped.This particular problem is caused by CoreGraphics (Quartz) having a flipped y-axis, so zero is at the bottom rather that the</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3610687801487572667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3610687801487572667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3610687801487572667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3610687801487572667'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/core-text-flipped-coordinates-and-glyph.html' title='CoreText - flipped coordinates and glyph curves.'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/SMrsVJ1N0bI/AAAAAAAAAD4/e37ibYc6NIQ/s72-c/Picture+9.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3483073301233057851</id><published>2008-09-11T22:20:00.010+01:00</published><updated>2008-09-24T20:24:07.613+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><title type='text'>CoreText and Typographic Bounds</title><summary type='text'>[build 44] Having got the simple file with text to open the next stage was to get the brute to publish. The first attempt at publishing yielded nothing - white space. Looking at the debug log that dumps the published movie it was because the text object that was published was empty i.e. had no text.The primary cause of this was due the conversion of floating point to integer values. Within Cello </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3483073301233057851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3483073301233057851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3483073301233057851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3483073301233057851'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/osx-core-text-and-typographic-bounds.html' title='CoreText and Typographic Bounds'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/SMmQ-bvQn9I/AAAAAAAAADo/kXhsMEP-snM/s72-c/Picture+7.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-158264581026511063</id><published>2008-09-10T09:09:00.004+01:00</published><updated>2008-09-24T07:55:52.427+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>CoreText &amp; Cocoa Text - what is RTF?</title><summary type='text'>[build 42] Cello will open some simple files with text, The question "what is RTF" seems suddenly quite poignant. The reading of a file with text fails because the reading of the RTF (within the file) fails. Cocoa believes the RTF to be bad and throws up it's hands in horror. Cross checking my results with TextEdit (I added some code to squirt out the RTF on its own in a file) yields the same </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/158264581026511063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=158264581026511063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/158264581026511063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/158264581026511063'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/cocoa-text-core-text-what-is-rtf.html' title='CoreText &amp; Cocoa Text - what is RTF?'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/SMeBC654xXI/AAAAAAAAADg/YKVVf2H-5LA/s72-c/Picture+3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3636121514802433931</id><published>2008-09-09T07:50:00.004+01:00</published><updated>2008-09-24T07:56:11.129+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><title type='text'>Text - the first test and the first crash</title><summary type='text'>[build 41] I have got as far as linking in the text related files for reading, writing and publishing. This means that all the code that is required to read a text object, write it, and publish it has been added to Cello. As my first test I have created a text file in the PC version of Cello with the single word "Text".Attempting to open this crashes - this, of course, is progress. I have </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3636121514802433931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3636121514802433931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3636121514802433931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3636121514802433931'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/09/text-first-test-and-first-crash.html' title='Text - the first test and the first crash'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5Ye7q8Jvgjg/SMYdRjpUBwI/AAAAAAAAADY/URH0kmUV8Bo/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7000414686182259528</id><published>2008-08-28T07:08:00.006+01:00</published><updated>2008-09-24T07:56:17.344+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><title type='text'>Core Text - CFStringGetParagraphBounds and Setting Paragraph Styles</title><summary type='text'>I am working through the text classes writing unit tests. As Cello had no unit tests before I took on the OSX port I have been writing unit tests primarily for the delta, that is the changes I have made, rather than attempting to add unit tests for the all of the historic code. Sure I would love to but that is a project in it's self. I would hope that as I find bugs in the code (sure as are eggs </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7000414686182259528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7000414686182259528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7000414686182259528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7000414686182259528'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/08/core-text-cfstringgetparagraphbounds.html' title='Core Text - CFStringGetParagraphBounds and Setting Paragraph Styles'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4396647191369297903</id><published>2008-08-20T22:26:00.006+01:00</published><updated>2008-09-24T07:56:27.801+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>CoreText, RTF, Unit Testing</title><summary type='text'>I have added the reading and writing of RTF, using the initWithRTF and RTFFromRange cocoa methods. These deal with NS/CFAttriibutedStrings, and back onto NS/CFData.  The wrinkle is that NSColor has to be converted to CFColor as I covered before here.The accompanying Unit Tests were quite simple, Create a CFAttributedstring, add attributes, write as a CFData, read back and compare. They should be </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4396647191369297903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4396647191369297903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4396647191369297903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4396647191369297903'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/08/core-text-rtf-unit-testing.html' title='CoreText, RTF, Unit Testing'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1954601955284960292</id><published>2008-08-13T18:52:00.005+01:00</published><updated>2008-09-24T07:57:04.025+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>CoreText and CTMutableParagraphStyle</title><summary type='text'>I have implemented Cello's paragraph and character styles as thin wrappers for CTParagraphStyle and CFDictionary. This corresponds to the way that text styling is handled in core text.The API for CTParagraphStyle is rather thin. There is, for example, no CTMutableParagraphStyle - which means that API supports the creation of a CTParagraphStyle in one hit - but you can not set properties one by </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1954601955284960292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1954601955284960292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1954601955284960292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1954601955284960292'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/08/ctmutableparagraphstyle.html' title='CoreText and CTMutableParagraphStyle'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-2277139661600580622</id><published>2008-08-10T22:31:00.008+01:00</published><updated>2008-09-24T07:57:16.379+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='Unicode'/><title type='text'>CoreText - the approach</title><summary type='text'>I have been looking at the text in Cello in some detail. The approach that  have decided to take is to change the fundamental text object so that it is a thin wrapper on a NS/CFAttributedString. Doing this gives me RTF import and Unicode support at a basic level. On top of this the CTFrame fits quite naturally into one of the Cello classes.The fact that the PC version of cello is fundamentally </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/2277139661600580622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=2277139661600580622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2277139661600580622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/2277139661600580622'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/08/i-have-been-looking-at-text-in-cello-in.html' title='CoreText - the approach'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7989877229124781274</id><published>2008-08-06T07:59:00.010+01:00</published><updated>2008-09-24T07:57:41.792+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Unicode'/><title type='text'>CoreText and RTF</title><summary type='text'>Sample Unicode: 魚もたばませんCello has text so it has support for line layout and line breaking. It has classes that represent Paragraphs, Styles, Style Runs and Layout blocks etc. Down at the metal the text is serialized (written and read) as RTF. Cello has its own RTF reader and writer. All this has to mesh with CoreText - that is where the glyph curves ultimately come from. Also in the back of my </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7989877229124781274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7989877229124781274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7989877229124781274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7989877229124781274'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/08/core-text-and-rtf.html' title='CoreText and RTF'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/SJnn8fYop4I/AAAAAAAAADM/WPU-wD6KX4I/s72-c/Picture+14.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4005510870334734118</id><published>2008-08-03T11:26:00.007+01:00</published><updated>2008-09-24T20:24:30.532+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><title type='text'>Converting Quartz Paths - MoveTo, LineTo, CurveTo</title><summary type='text'>Cello has it's own support for curves - internally it has support for cubic and quadratic splines, as well as lines - the equivalent to what exists in CoreGraphics (Quartz) and generally in vector graphics systems. Within Cello there are classes that represent multi contoured splines and the attendant trickery to draw and manipulate them. They are of significance to me now as the existing Cello </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4005510870334734118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4005510870334734118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4005510870334734118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4005510870334734118'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/08/converting-quartz-paths-moveto-lineto.html' title='Converting Quartz Paths - MoveTo, LineTo, CurveTo'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4133700148607063195</id><published>2008-07-30T21:39:00.006+01:00</published><updated>2008-09-24T07:58:10.325+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><title type='text'>CoreText and Unit Testing</title><summary type='text'>Working through the text the font handling in Cello I find that it meshes well with Core Text. The extent of what I am currently doing requires me to create CTFonts and get glyph curves. This is very similar to some early work I was doing in Cello and as I progress a few modest functions into my Core Text support there is an opportunity to share code.If you have not used Core Text before it is a </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4133700148607063195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4133700148607063195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4133700148607063195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4133700148607063195'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/core-text-and-unit-testing.html' title='CoreText and Unit Testing'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8324931989866133376</id><published>2008-07-27T11:24:00.004+01:00</published><updated>2008-09-24T07:58:19.608+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><title type='text'>Starting Text</title><summary type='text'>One of the real pleasures of working on Cello is the quality of the code and commenting. I have started working on text. The two big things left on the file format are text and sounds. Text is, I think, the bigger - but is more familiar to me.The first step is to compile in the registration object and then to work through files that need to be built and included, to add and then build them. The </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8324931989866133376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8324931989866133376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8324931989866133376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8324931989866133376'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/starting-text.html' title='Starting Text'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3349994856438642758</id><published>2008-07-26T21:25:00.008+01:00</published><updated>2008-09-24T20:24:43.434+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='Image IO'/><title type='text'>Reading Bitmap Objects III</title><summary type='text'>[build 0034] It looks like I have come to the end of DIBs and  CGImages - well that is as far as the file format and file generation goes. The final part was, much as I suspected, mainly leg-work.Below is one of the final parts of my testing - showing transparency working correctly in the output file. The GIF transparency has the characteristic halo as it only supports 0% or 100% </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3349994856438642758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3349994856438642758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3349994856438642758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3349994856438642758'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/reading-bitmap-objects-iii.html' title='Reading Bitmap Objects III'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_5Ye7q8Jvgjg/SIuLygif2GI/AAAAAAAAAC0/Bq8T2IRvaZM/s72-c/Picture+10.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-6066333756930870820</id><published>2008-07-20T19:21:00.005+01:00</published><updated>2008-09-24T20:24:52.989+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='Image IO'/><title type='text'>Saving JPEGs with Image IO</title><summary type='text'>[build 0031] JPEGs now work again.Fixing the problems in the JPEG images fell out in the wash. It looked like a byte ordering problem combined with a pixel size problem (which would explain the vertical striping) - but I did not look into it. Instead I used Image IO to generate the JPEG. The save, using Image IO, fell out in four or five lines of code. Using Image IO means that the OS will handle</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/6066333756930870820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=6066333756930870820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6066333756930870820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6066333756930870820'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/saving-jpegs-with-image-io.html' title='Saving JPEGs with Image IO'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8748929381467066291</id><published>2008-07-20T00:18:00.006+01:00</published><updated>2008-09-24T20:25:05.921+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>DIBS and CGImage - The price of progress</title><summary type='text'>[build 0030] Sometimes the price of progress is that things stop working. Not much works in Cello but the JPEG based part of the export now no longer works.For the past couple of weeks I have been working out the underlying problems with bitmaps, DIBs and CGImages. I abandoned my approach of getting the melding the CGImage implementation to be more like the MFC Dibs and instead more-or-less </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8748929381467066291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8748929381467066291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8748929381467066291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8748929381467066291'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/dibs-and-cgimage-price-of-progress.html' title='DIBS and CGImage - The price of progress'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_5Ye7q8Jvgjg/SIJ2iUBy90I/AAAAAAAAACs/4evT-o031gM/s72-c/Picture+8.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4642049232191706781</id><published>2008-07-13T09:14:00.006+01:00</published><updated>2008-09-24T20:25:22.407+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='Image IO'/><title type='text'>More Bitmaps - DIBS and CGImage</title><summary type='text'>[build 0029] I have been working on bitmaps and bit images and the whole thing is slowly coming more into shape. The issue that I have been having with bitmaps is that fundamentally the bitmaps that are imported into Cello using Image IO as a CGImage are richer and more complex than those represented by DIBS. A CGImage has notions of byte order (big and little endian) and different data packing.</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4642049232191706781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4642049232191706781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4642049232191706781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4642049232191706781'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/more-bitmaps-dibs-and-cgimage.html' title='More Bitmaps - DIBS and CGImage'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_5Ye7q8Jvgjg/SHm5o1dpPYI/AAAAAAAAACk/Lu4cTUbLiow/s72-c/Picture+7.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-1214168885213138229</id><published>2008-07-04T23:21:00.006+01:00</published><updated>2008-07-06T19:32:46.339+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><title type='text'>Reading Bitmap Objects II</title><summary type='text'>[build 0027] Looking at the problem with the images it initially seemed like it might be a problem with bounds calculations. Initially I suspected my implementation of CRect intersection  operation, that I had added to get the image import code to link, might be at fault. This was a hunch despite the fact that I had written Unit Tests for this essentially trivial function. Like many hunches it </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/1214168885213138229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=1214168885213138229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1214168885213138229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/1214168885213138229'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/reading-bitmap-objects-ii.html' title='Reading Bitmap Objects II'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_5Ye7q8Jvgjg/SG6iniivFpI/AAAAAAAAACU/IIhIFSnxHG4/s72-c/Picture+5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-4484284226406519462</id><published>2008-07-04T08:00:00.003+01:00</published><updated>2008-07-04T23:21:16.730+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><title type='text'>Reading Bitmap Objects I</title><summary type='text'>Cello's file format is broken up into a number of distinct objects. The simplest the shape works and publishes correctly. All the object types are registered through a GUID and the read calls a factory to make objects that correspond to that GUID. This makes for an easy incremental development. All the registration *except* for the shape object is commented out. It is possible to uncomment them </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/4484284226406519462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=4484284226406519462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4484284226406519462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/4484284226406519462'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/reading-bitmap-objects.html' title='Reading Bitmap Objects I'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_5Ye7q8Jvgjg/SG3LTF5DPjI/AAAAAAAAACM/WUSN2_j_7yE/s72-c/Picture+3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3297664659299556439</id><published>2008-07-02T05:28:00.003+01:00</published><updated>2008-07-03T23:13:32.586+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Cello - publishing the first file</title><summary type='text'>[build 0025] Cello now publishes the simple test file (just a red square) under OSX.The publish revealed a single bug - code that was designed to ensure that all the folders in a file path existed, and created them if any were missing, failed. Cello has a class that does this and calls through to one of a small number of utility functions built on top of the cocoa NSFileManager. When writing the </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3297664659299556439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3297664659299556439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3297664659299556439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3297664659299556439'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/cello-publishing-first-file.html' title='Cello - publishing the first file'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_5Ye7q8Jvgjg/SGsET2gKdkI/AAAAAAAAACE/NLl61jsNEHY/s72-c/Picture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-6099510491761529443</id><published>2008-07-01T05:43:00.010+01:00</published><updated>2008-07-02T05:23:50.390+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><title type='text'>Cello - opening the first file</title><summary type='text'>[build 0024] Cello will now open a very simple file (just a red square) and save an identical one under OSX.Getting Cello to open a file brought in a fair number of new files. Objects within the Cello file format are referenced by a unique identifier (actually a GUID) which are constructed from a factory. So adding the code to register the simplest object (a basic shape) with the factory had the </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/6099510491761529443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=6099510491761529443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6099510491761529443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6099510491761529443'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/07/cello-opening-first-file.html' title='Cello - opening the first file'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/SGm173TKZ8I/AAAAAAAAAB8/axlzIrJJQAc/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7916640435447475955</id><published>2008-06-27T14:56:00.004+01:00</published><updated>2008-06-30T08:11:21.800+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XCode'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><title type='text'>Mounting the board - Cello's first crash.</title><summary type='text'>Cello now crashes. This represents progress as it means that I have come to an end of rounding-up in the great ranch of link errors.Cello won't do any more than allow you to choose a file - it crashes way before any part of the file reading code is called. So now to work through the crashes - I fully expect this process to pull in more and more files.I expect that I will have to largely pause my </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7916640435447475955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7916640435447475955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7916640435447475955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7916640435447475955'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/mounting-board-cellos-first-crash.html' title='Mounting the board - Cello&apos;s first crash.'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5Ye7q8Jvgjg/SGTxwto2iZI/AAAAAAAAAB0/SDlPxMxdmzg/s72-c/Picture+19.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-5216341445570839856</id><published>2008-06-26T14:55:00.007+01:00</published><updated>2008-09-24T20:25:31.043+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='Image IO'/><title type='text'>CGImage &amp; ImageIO - converting premultiplied alpha</title><summary type='text'>The final part of the DIB (bitmap) equation is reading images. Cello has classes for reading and writing PNG, JPEG and a few formats including PaintShop Pro that are prevalent on windows. The change that I have made here is to use Image IO. Image IO will let you read all the most common formats - and also has support for RAW images (as spat by many digital cameras) amongst other things.ImageIO is</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/5216341445570839856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=5216341445570839856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5216341445570839856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5216341445570839856'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/imageio-and-converting-premultiplied.html' title='CGImage &amp; ImageIO - converting premultiplied alpha'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8214357171492080687</id><published>2008-06-25T17:41:00.007+01:00</published><updated>2008-06-26T07:34:07.042+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XCode'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><title type='text'>XCode unit testing and Bundle Resources</title><summary type='text'>In order to test the code that reads images I needed to set up tests that read images. In order to do this repeatably the best thing seemed to be to add them to the bundle of test application. In XCode this is quite simple - I just dragged in a folder of test images into the right place in my source files and XCode magically knows that these are to be copied  - updating the copy files phase of </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8214357171492080687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8214357171492080687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8214357171492080687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8214357171492080687'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/xcode-unit-testing-and-bundle-resources.html' title='XCode unit testing and Bundle Resources'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SGJ1g-Lg5eI/AAAAAAAAABs/dMMPuXqrcqM/s72-c/Picture+15.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3750094835975954082</id><published>2008-06-24T15:28:00.004+01:00</published><updated>2008-09-24T20:25:59.142+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>DIB to CGImage - the washing up</title><summary type='text'>I changed the plans and in the end kept the class that manage the DIBs almost unchanged. The DIB class, within Cello, represents a bitmap with a physical bit-image. Give or take the fact that it can handle native compressed bit-images it handles the concept that an image is a bunch of bits and possibly a color table. A CGImage is very similar except that you can't get to the bit-image. You can </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3750094835975954082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3750094835975954082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3750094835975954082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3750094835975954082'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/dib-to-cgimage-washing-up.html' title='DIB to CGImage - the washing up'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-88656118473129764</id><published>2008-06-21T00:07:00.004+01:00</published><updated>2008-09-24T20:26:06.055+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>Moving DIBs (device-independent bitmaps) to CGImage</title><summary type='text'>The biggest remaining clot of link errors (probably about 30 or so) relate to Cello's handing of Bitmaps. There are a handful of classes, many parts of which of which are commented out or omitted from compilation, that deal with bitmaps. Hanging on to this are classes and libraries that deal with reading and writing images to and from physical files. Central to all of this is the class that </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/88656118473129764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=88656118473129764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/88656118473129764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/88656118473129764'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/moving-dibs-device-independent-bitmaps.html' title='Moving DIBs (device-independent bitmaps) to CGImage'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-5611977339269146993</id><published>2008-06-19T22:27:00.009+01:00</published><updated>2008-06-19T23:21:45.805+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XCode'/><title type='text'>Getting the ZLib dylib to link in XCode</title><summary type='text'>With the link errors dropping into the 50s the home straight of something that links, though not close, seems possible. My latest teaser was some problems linking Zlib. The Cello sources include Zlib but as it exists as standard under OSX there seemed little point in compiling it into the application - also I dimly remember that there was some issue with it compiling - not that large but using </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/5611977339269146993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=5611977339269146993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5611977339269146993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5611977339269146993'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/linking-zlib-in-xcode.html' title='Getting the ZLib dylib to link in XCode'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/SFrUFvtXpmI/AAAAAAAAABY/S5GBFmdG-Pk/s72-c/link+error.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-6550470436023008605</id><published>2008-06-17T23:31:00.005+01:00</published><updated>2008-06-19T23:22:49.202+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>Implementing MFC CTime using CFDate</title><summary type='text'>In the early stages of Cello I stubbed out the MFC CTime class with little more than a constructor in order to get it to compile. Working my way through the link errors this is something that I needed to flesh out.My basic plan with implementing these MFC classes is to keep the API but to build them on top of Core Foundation objects. Core Foundation can quite ubiquitously be expressed as NS (</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/6550470436023008605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=6550470436023008605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6550470436023008605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6550470436023008605'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/mfcs-ctime-as-cfdate.html' title='Implementing MFC CTime using CFDate'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8552570431969280984</id><published>2008-06-15T17:08:00.009+01:00</published><updated>2008-06-17T23:18:27.423+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='STL'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>Implementing SetFileTime and GetFileTime under OSX</title><summary type='text'>Working through the link errors makes for some catching up on some things that I sketched out and did not complete. I have been looking at the file handling class, file streams and writing unit tests to make sure that the they are working properly as I flesh them out.I have backed Cello file handling class more or less straight onto STL file streams. In this class there are a couple of methods </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8552570431969280984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8552570431969280984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8552570431969280984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8552570431969280984'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/implementing-setfiletime-and.html' title='Implementing SetFileTime and GetFileTime under OSX'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3123111229109792593</id><published>2008-06-10T22:40:00.012+01:00</published><updated>2008-06-11T06:50:18.059+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>CString and Unit Tests</title><summary type='text'>Right at the head of the link errors was the CString class and most of it's methods. Early on in the port I copied the class declaration from MFC, commented out almost all of the methods and then uncommented the ones that as I got compile errors. It is surprising just how few of the class methods are used. At the time I knew that I wanted to implement it as a CFString so I added constructors and </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3123111229109792593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3123111229109792593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3123111229109792593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3123111229109792593'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/cstring-and-unit-tests.html' title='CString and Unit Tests'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5Ye7q8Jvgjg/SE77MnF7sRI/AAAAAAAAABA/45qKsQMkUF4/s72-c/Picture+10.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-5180658633426544907</id><published>2008-06-09T19:05:00.003+01:00</published><updated>2008-06-09T19:13:52.704+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='XCode'/><title type='text'>Link errors - Waxing the board</title><summary type='text'>If XCode is to be believed I have 460 files compiling including the key file that is responsible for opening and reading the the Cello document. The next step is to wrap the "open" call in minimal snippet of cocoa and some make-shift UI. Pictured bellow is the Nib for the full FileTest UI.The idea from here is then to surf through the link errors and, for a while, to let them drive the </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/5180658633426544907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=5180658633426544907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5180658633426544907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5180658633426544907'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/link-errors-waxing-board.html' title='Link errors - Waxing the board'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5Ye7q8Jvgjg/SE1xQY9K9TI/AAAAAAAAAAs/A2OKoxkojYg/s72-c/Picture+7.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-5467241450253063596</id><published>2008-06-03T19:52:00.007+01:00</published><updated>2008-10-22T18:46:15.155+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><category scheme='http://www.blogger.com/atom/ns#' term='QuickTime'/><title type='text'>QuickTime - converting Audio Formats</title><summary type='text'>As I near the end of working through the output generation files I have come across the the issue of audio content. The Cello output file has sound embedded in it either as ADPCM or MP3. As Cello is a port from windows it has code that will covert from WAV (ubiquitous on Windows) to ADPCM. There is a converter class in Cello that backs onto some MFC APIs that takes care of this.I have not done </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/5467241450253063596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=5467241450253063596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5467241450253063596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/5467241450253063596'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/quicktime-converting-audio-formats.html' title='QuickTime - converting Audio Formats'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7442235035410797138</id><published>2008-06-02T18:56:00.008+01:00</published><updated>2008-09-24T20:26:26.622+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><title type='text'>Cubics &amp; Quadratics - Approximation results</title><summary type='text'>I spent a few hours going through the Font Forge files to get a grip on how much work it would be to use it in Cello. My suspicion is that the code in Font Forge will produce better results in converting Cubics to Quadratics for fonts, simply because Fount Forge is dedicated to this kind of work and George Williams (the author) has obviously put a lot of work and consideration into the </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7442235035410797138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7442235035410797138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7442235035410797138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7442235035410797138'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/06/i-spent-few-hours-going-through-font.html' title='Cubics &amp; Quadratics - Approximation results'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5Ye7q8Jvgjg/SEQ0iHWZ7dI/AAAAAAAAAAY/V3oDolQ0DkY/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-8833876967975242246</id><published>2008-05-30T19:55:00.007+01:00</published><updated>2008-09-24T20:26:40.910+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='TrueType'/><title type='text'>Glyphs to Paths -  Cubics &amp; Quadratics in CoreText</title><summary type='text'>Sometimes the world is a bit more upside down than you might initially perceive - Cello's output file format requires its curves to be described as Quadratics rather than Cubics. So I need to convert any Cubic paths that I get from CoreText to Quadratics.Converting from Quadratics to Cubics is far less straight forward than the other way around. Cubics can only be approximated by Quadratics they </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/8833876967975242246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=8833876967975242246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8833876967975242246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/8833876967975242246'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/05/glyphs-to-paths-cubics-quadratics-in.html' title='Glyphs to Paths -  Cubics &amp; Quadratics in CoreText'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7132302901032745585</id><published>2008-05-29T18:13:00.007+01:00</published><updated>2008-09-24T20:26:51.886+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='TrueType'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Glyphs to Paths - Quadratics &amp; Cubics in CoreText</title><summary type='text'>Pressing on with the conversion of the file that deals with glyphs I need to obtain the path that represents a glyph. CoreText provides the function CTFontCreatePathForGlyph that returns a CGPath of an individual glyph. The final thing to do then is to convert the path to the output format.Core Graphics provides a function CGPathApply that will apply a user defined function to each element a part</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7132302901032745585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7132302901032745585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7132302901032745585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7132302901032745585'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/05/glyphs-to-paths-with-quadratics-and.html' title='Glyphs to Paths - Quadratics &amp; Cubics in CoreText'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-7117603943113547632</id><published>2008-05-23T07:43:00.004+01:00</published><updated>2008-09-24T07:59:20.542+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='TrueType'/><title type='text'>Kerning Tables and CoreText</title><summary type='text'>I don't think I have ever worked on something type related without having, at some stage, to grub around in font tables. Cello, it turns out, is no different. The output file requires a subset of kerning pairs of the fonts used in the documents - to do this I need to get a set of all the kerning pairs that are defined a given font. Core Text won't give me the kerning pars but it has a function </summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/7117603943113547632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=7117603943113547632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7117603943113547632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/7117603943113547632'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/05/kerning-tables-and-core-text.html' title='Kerning Tables and CoreText'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-6452652103546111853</id><published>2008-05-21T22:43:00.008+01:00</published><updated>2008-09-24T20:27:54.175+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATSUI'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreText'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreGraphics'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><title type='text'>Fonts and Font Scalars - from D-Type to CoreText</title><summary type='text'>I have come to the part of Cello where I need to start dealing with text and fonts. Detailed information about glyphs, metrics, kerning pairs, glyph outlines etc. all need to be known in order to generate the final output file.The Windows (MFC) version of Cello uses the D-Type font engine (scalar). Looking at D-Type it looks pretty good, and it is available for OSX. I do not, however, plan to use</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/6452652103546111853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=6452652103546111853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6452652103546111853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/6452652103546111853'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/05/glyphs-metrics-and-coretext.html' title='Fonts and Font Scalars - from D-Type to CoreText'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-3415950427401561323</id><published>2008-05-20T19:23:00.006+01:00</published><updated>2008-05-20T22:54:12.204+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='XCode'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>typename in templates - gcc errors</title><summary type='text'>Pressing on I am working through the generator files. These are a set of files that generate the output. The biggest problem I found so far in these is some template definitions that tripped up gcc which requires a typename to be specified in some circumstances where visual c++ was quite happy. The following class - when complied on XCodetemplate &lt;class T&gt;class Foo{public:  Foo(const T&amp;);  std::</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/3415950427401561323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=3415950427401561323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3415950427401561323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/3415950427401561323'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/05/typename-in-templates-gcc-errors.html' title='typename in templates - gcc errors'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2171197221666147351.post-870936604932817077</id><published>2008-05-19T21:47:00.004+01:00</published><updated>2008-07-02T12:21:40.163+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LEX'/><category scheme='http://www.blogger.com/atom/ns#' term='YACC'/><title type='text'>Pargen for YACC and LEX</title><summary type='text'>The YACC and LEX libraries that Cello links against come from Pargen. Pargen is a YACC and LEX distribution for use on Windows.  Cello was supplied with the Pargen libraries without source. Fortunately Bumble Bee Software have the sources to their previous release of their Pargen library available for download. Checking the source headers against the headers that were included with the Cello code</summary><link rel='replies' type='application/atom+xml' href='http://badbase.blogspot.com/feeds/870936604932817077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2171197221666147351&amp;postID=870936604932817077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/870936604932817077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2171197221666147351/posts/default/870936604932817077'/><link rel='alternate' type='text/html' href='http://badbase.blogspot.com/2008/05/pargen-for-yacc-and-lex.html' title='Pargen for YACC and LEX'/><author><name>Bad Base</name><uri>http://www.blogger.com/profile/01455256758425725585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_5Ye7q8Jvgjg/S1TQCp3YAQI/AAAAAAAAAKg/hexwN1RNv8U/S220/futurama-bender.jpg'/></author><thr:total>0</thr:total></entry></feed>
