- Starting dialog for saving new templates.
- Fuck it; it's Friday
Friday, July 31, 2009
Tuesday, July 28, 2009
Monday, July 27, 2009
No cold, hangover, birthdays or dates tonight. Yay..
- Going with a new dialog to create and save new element types.
- Using DetectingElement modal dialog for user glyph matches is a little clumsy but is useful because of existing save/no save buttons (which I worked out after finishing a non-modal way to set element types which is too unsafe regarding database updates).
- Going with a new dialog to create and save new element types.
- Using DetectingElement modal dialog for user glyph matches is a little clumsy but is useful because of existing save/no save buttons (which I worked out after finishing a non-modal way to set element types which is too unsafe regarding database updates).
Wednesday, July 22, 2009
- Moved CurrentGlyph and CurrentGlyphType properties down to ScoreParser from VM. When the CurrentGlyph changes I can find an instance and set DetectingElement which will highlight the instance on the score. Cool.
- Mostly works; I need to refactor code for saving stuff. Perhaps I can pop up a dialog for details when saving an element type for the first time (name, mustIntersect etc).
- There's a problem with the FrameworkElement.BringIntoView() method in that it doesn't always bring things into view. It may have something to do with the Y offset of the parent object, but this is an annoyance I don't need.. :/
- Mostly works; I need to refactor code for saving stuff. Perhaps I can pop up a dialog for details when saving an element type for the first time (name, mustIntersect etc).
- There's a problem with the FrameworkElement.BringIntoView() method in that it doesn't always bring things into view. It may have something to do with the Y offset of the parent object, but this is an annoyance I don't need.. :/
Tuesday, July 21, 2009
It seems that the Sunday hangover was as much thanks to a cold or flu as grog.
- I'll set glyph types on all glyph instances and just update them as necessary when the user makes corrections.
- Adding a few more element types to database. The range of types is getting a bit broad (such as 'tail5topGraceSlash' for the flag/tail of an upright acciaccatura).
- Need to add a button to confirm match but not update detection params in db. Done.
- Need to do something clever when user manually sets glyph type. Must highlight instance of glyph on score and on change, update db. Might need a checkbox to toggle db updating.
- I'll set glyph types on all glyph instances and just update them as necessary when the user makes corrections.
- Adding a few more element types to database. The range of types is getting a bit broad (such as 'tail5topGraceSlash' for the flag/tail of an upright acciaccatura).
- Need to add a button to confirm match but not update detection params in db. Done.
- Need to do something clever when user manually sets glyph type. Must highlight instance of glyph on score and on change, update db. Might need a checkbox to toggle db updating.
Sunday, July 19, 2009
Hangover level at about 3.
- Currently have spinny magenta rectangle around selected score element, but sometimes it can be off the page.
- Score now scrolls to centre selected element.
- Continuing on with problem of music glyphs incorrectly grouped in strings and ballsing up my matching.
- Adding a big fat button for false positives on garbage elements. Done.
- Need to colour found glyphs to figure out what's going on.
- Err.. glyphs in strings doesn't matter since I'm matching each glyph type, not instances of glyphs. Just need to apply match results to glyph instances (and can break up strings where necessary).
- Breaking up glyph runs (strings) might be hard since the positioning of each character is relative to previous chars and is based on funky typography/font stuff.
- Need to allow user to adjust glyph types before setting types of all instances
Hangover still at about 3.
- Currently have spinny magenta rectangle around selected score element, but sometimes it can be off the page.
- Score now scrolls to centre selected element.
- Continuing on with problem of music glyphs incorrectly grouped in strings and ballsing up my matching.
- Adding a big fat button for false positives on garbage elements. Done.
- Need to colour found glyphs to figure out what's going on.
- Err.. glyphs in strings doesn't matter since I'm matching each glyph type, not instances of glyphs. Just need to apply match results to glyph instances (and can break up strings where necessary).
- Breaking up glyph runs (strings) might be hard since the positioning of each character is relative to previous chars and is based on funky typography/font stuff.
- Need to allow user to adjust glyph types before setting types of all instances
Hangover still at about 3.
Wednesday, July 15, 2009
- Starting to matching glyph types.
- Only going to match glyphs that only appear in single char strings. Done.
- Need to filter out glyphs which never appear on score. Done.. I think.
- Having a problem with glyphs in glyph runs that really shouldn't be (like bass clef followed by key signature accidentals being treated as a single entity). I could check all glyphs that appear in at least one single char string rather than in only single char strings. User can still override poor matches.
- Only going to match glyphs that only appear in single char strings. Done.
- Need to filter out glyphs which never appear on score. Done.. I think.
- Having a problem with glyphs in glyph runs that really shouldn't be (like bass clef followed by key signature accidentals being treated as a single entity). I could check all glyphs that appear in at least one single char string rather than in only single char strings. User can still override poor matches.
Tuesday, July 14, 2009
- Clearing selection rectangle.
- Need to hook up Element type dialog to element being processed. Done.
- Updating element type size info in database when a type is confirmed, but there's no real safeguard against outlying elements ruining data.
- Next up: guessing glyph types and verifying with user (rather than just paths).
- Need to hook up Element type dialog to element being processed. Done.
- Updating element type size info in database when a type is confirmed, but there's no real safeguard against outlying elements ruining data.
- Next up: guessing glyph types and verifying with user (rather than just paths).
Monday, July 13, 2009
- Trying to place some kind of blindingly obvious effect around a score element when it is selected. This is a little difficult because the elements are all bits of a larger drawing for efficiency, and the larger drawing is translated and scaled automatically.
- Individual drawings can be animated so long as they're not frozen. I can create a new drawing (such as a rectangle) and add it to the selected score element's parent which takes care of coordinate translation to place it over/around the element. I can then animate the drawing; yay for spinning rectangles.
- First attempt resulted in a cluster of little red rectangles orbiting around the screen with the score jumping and spinning everywhere to stay out of the way. Not quite the desired result... The rectangle rotation origin needs to be fixed to the centre of itself, not the top left corner of the canvas. Setting the RotateTransform CenterX and CenterY to the centre point of the element bounds fixed it.
- Spinny red rectangles on selected element on score finished.
- Need to remove rectangles when not in use. They currently sit around and spin forever after I lose reference to them.
- Now holding on to selection rectangle and its parent, will be easy to remove.
- Individual drawings can be animated so long as they're not frozen. I can create a new drawing (such as a rectangle) and add it to the selected score element's parent which takes care of coordinate translation to place it over/around the element. I can then animate the drawing; yay for spinning rectangles.
- First attempt resulted in a cluster of little red rectangles orbiting around the screen with the score jumping and spinning everywhere to stay out of the way. Not quite the desired result... The rectangle rotation origin needs to be fixed to the centre of itself, not the top left corner of the canvas. Setting the RotateTransform CenterX and CenterY to the centre point of the element bounds fixed it.
- Spinny red rectangles on selected element on score finished.
- Need to remove rectangles when not in use. They currently sit around and spin forever after I lose reference to them.
- Now holding on to selection rectangle and its parent, will be easy to remove.
Sunday, July 12, 2009
Hello world
So who is this blog for? I'm not really sure yet, but for now I guess it's mainly for me. It can be motivating to look over your shoulder from time to time and see how far you've come. I plan to post snippets of what I'm working on as I trudge on towards the completion of my software dev project.
Maybe someone will find my posts interesting; if you don't know who I am or what I'm working on, probably not so much.
I'll try to keep main tasks in bold, followed by the details, plans and ideas (random shite).
- Currently working on parsing of scores in .xps format. Element identification is pretty good.
- I need a way to bubble events up to UI so user can confirm dodgy detection. If a element gets a poor detection ranking but user confirms it, templates and error margins should be adjusted.
- Routed events look promising but seem tied to DependencyObjects. Also difficult to hook routed events to model objects nicely.
- Could just use CLR events on model objects, but kind of need handling at VM layer and view layer. In this case, UI will place adorner around the element on the score (retaining context), select element type in currently displayed list (easy), user changes type if necessary and hits a big ok button (or presses enter).
- Parser must set a CurrentElement property. I'll make a new element type list so as to not interfere with shit that currently works. UI can bind straight through to parser.
- How will detection pause while waiting for user? Really needs to wait on modal dialog :/
- View can handle propertyChanged event for CurrentElement and throw up dialog. Dialog can live on the far left side of the screen.
- Ugh, the score doesn't get drawn to the screen until the parser has finished doing it's thing. Need to break down parsing and drawing routines, draw score to screen, hook up events in VM, then start parsing.
- Parsing/drawing order rejigged
- "Cannot perform this operation while dispatcher processing is suspended." In other words, I can't show a dialog until after the main score window has rendered. Shit. Starting parsing from score panel loaded event works.
- Displaying set of possible element types (quaver, quaver tail top, quaver rest etc etc) in dialog window when user confirmation is required.
- Elements are displayed as Drawing objects which don't have automatic "bring into view" method. Gonna have to place selection adorner manually.
- Looks like I did it manually last time anyway, easy enough to adjust.
- Or not. Score is drawn as drawing brush which gets stretched. Will have to work out translated point of a drawing within the brush.
Maybe someone will find my posts interesting; if you don't know who I am or what I'm working on, probably not so much.
I'll try to keep main tasks in bold, followed by the details, plans and ideas (random shite).
- Currently working on parsing of scores in .xps format. Element identification is pretty good.
- I need a way to bubble events up to UI so user can confirm dodgy detection. If a element gets a poor detection ranking but user confirms it, templates and error margins should be adjusted.
- Routed events look promising but seem tied to DependencyObjects. Also difficult to hook routed events to model objects nicely.
- Could just use CLR events on model objects, but kind of need handling at VM layer and view layer. In this case, UI will place adorner around the element on the score (retaining context), select element type in currently displayed list (easy), user changes type if necessary and hits a big ok button (or presses enter).
- Parser must set a CurrentElement property. I'll make a new element type list so as to not interfere with shit that currently works. UI can bind straight through to parser.
- How will detection pause while waiting for user? Really needs to wait on modal dialog :/
- View can handle propertyChanged event for CurrentElement and throw up dialog. Dialog can live on the far left side of the screen.
- Ugh, the score doesn't get drawn to the screen until the parser has finished doing it's thing. Need to break down parsing and drawing routines, draw score to screen, hook up events in VM, then start parsing.
- Parsing/drawing order rejigged
- "Cannot perform this operation while dispatcher processing is suspended." In other words, I can't show a dialog until after the main score window has rendered. Shit. Starting parsing from score panel loaded event works.
- Displaying set of possible element types (quaver, quaver tail top, quaver rest etc etc) in dialog window when user confirmation is required.
- Elements are displayed as Drawing objects which don't have automatic "bring into view" method. Gonna have to place selection adorner manually.
- Looks like I did it manually last time anyway, easy enough to adjust.
- Or not. Score is drawn as drawing brush which gets stretched. Will have to work out translated point of a drawing within the brush.
Subscribe to:
Posts (Atom)