$(CXX) -o $@ $^ $(LOADLIBES)
-.PHONY: clean
+.PHONY: clean docxx
clean:
rm -f $(exe) $(DOCDIR)/* core $(obs) $(ALLDEPS)
$(MAKE) -C Documentation doc
# doc++ documentation of classes
-docpp: $(progdocs)
- -mkdir $(DOCDIR)
- doc++ -p -I -d $(DOCDIR) $^
+docxx: $(progdocs)
+ doc++ -p -d $(DOCDIR) $^
$(OBJECTDIR)/%.o: $(CCDIR)/%.cc
$(DODEP)\
-
- ./input/standchen.ly.rej
-
- ./src/stem.cc.rej
-
- * scrap simplestaff
+This is an assorted collection of stuff that will be done, might be
+done, or is an idea that I want to think about
BUGS
* first clef isn't printed
- * accidental placement for other clefs
+ * key undo
+
+ * key print if
SEVERELY LACKING:
* grace notes
+ * dynamics (hairpins)
+
INPUTLANGUAGE
* lose the $ and @ ?
SMALLISH PROJECTS
+ * binsearch for notenames
+
* stafftypes: voice names/ instrument names.
- * make spanner for staffsym
-
- * Lookup::tex_glissando, Lookup::tex_bracket,
- Lookup::tex_cresc, Lookup::tex_decresc (use texbeam.cc as an
+ * Lookup::tex_glissando, Lookup::tex_bracket, (use texbeam.cc as an
example.)
* Decent TeX titledefs (\tempo, \metron, etc. )
* beam generation.
-
* all errors
FUTURE
+ * warning: beam(): Beam too narrow: beam gen not per stem
+
* put scripts on barcommands
* glissando
* itemcolumns
- * dependencies: -> implement children more elegantly. Handle
- spanner with broken deps.
-
* use an embedded language: scheme, lisp, S-lang, Perl, ?
* y -dims in internote?
* Spacing_request for manually adjusting spacing
- * Staff_group.
+ * Staff_group, Score_request_register.
* SHIT: meters/bars should be aligned, which is difficult if
we get different keychanges in different staffs.
* MusixTeX output possible?
* PostScript output (esp. Beams, Slurs, etc)
+
+ * caching breakpoints
\ No newline at end of file
struct Directional_spanner : Spanner{
/// -1 below heads, +1 above heads.
- int dir;
+ int dir_i_;
/// offset of "center" relative to left-column/0-pos of staff
virtual Offset center() const=0;
struct Slur : Directional_spanner {
Array<Notehead*> encompass;
- //int dir;
- bool open_left,open_right;
+ bool open_left, open_right;
- /****************/
+ /* *************** */
Offset center() const;
Slur();
void do_post_processing();
--- /dev/null
+/*
+ slurreg.hh -- declare Slur_register
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef SLURREG_HH
+#define SLURREG_HH
+
+#include "register.hh"
+
+struct Slur_register : Request_register {
+ Array<Slur_req*> requests_arr_;
+ Array<Slur *> slur_l_stack_;
+ Array<Slur*> end_slur_l_arr_;
+ int dir_i_;
+ /* *************** */
+ ~Slur_register();
+ Slur_register(Complex_walker*);
+ virtual bool try_request(Request*);
+ virtual void process_request();
+ virtual void acknowledge_element(Staff_elem_info);
+ virtual void do_pre_move_process();
+ virtual void set_dir(int);
+};
+
+#endif // SLURREG_HH
"||" "\finishbar" 0pt 2pt -8pt 8pt
":|" "\repeatbar" -4pt 0pt -8pt 8pt
"|:" "\startrepeat" 0pt 4pt -8pt 8pt
- ":|:" "\repeatbarstartrepeat" 0pt 8pt -8pt 8pt
+ ":|:" "\repeatbarstartrepeat" 0pt 16pt -8pt 8pt
}
"linestaf" "\linestafsym{%}{%}"
"stem" "\stem{%}{%}"
"fill" "\hbox{}"
+ "crescendo" "\crescendosym{%}" 0pt 0pt -3pt 3pt
+ "decrescendo" "\decrescendosym{%}" 0pt 0pt -3pt 3pt
}
"dots" = table {
Real miny;
int no_beams;
- ///////////////
Stem_info(){}
Stem_info(const Stem*);
}
-/****************/
+/* *************** */
Offset
Beam::center()const
assert(status >= POSTCALCED);
Real w=(paper()->note_width() + width().length())/2.0;
- return Offset(w, (left_pos + w* slope)*paper()->interline());
+ return Offset(w, (left_pos + w* slope)*paper()->internote());
}
{
slope = 0;
left_pos = 0.0;
- dir =0;
}
void
int d = i->get_default_dir();
dirs[(d+1)/2] ++;
}
- dir = (dirs[0] > dirs[1]) ? -1 : 1;
+ dir_i_ = (dirs[0] > dirs[1]) ? -1 : 1;
for (iter_top(stems,i); i.ok(); i++) {
- i->dir = dir;
+ i->dir = dir_i_;
}
}
dy = my -y;
}
left_pos += dy;
- left_pos *= dir;
- slope *= dir;
+ left_pos *= dir_i_;
+ slope *= dir_i_;
// URG
Real sl = slope*paper()->internote();
- paper()->lookup_p_->beam(sl, convert_dimen(20,"pt"));
+ paper()->lookup_p_->beam(sl, 20 PT);
slope = sl /paper()->internote();
}
left = (*stems.top()) ->pcol_l_;
right = (*stems.bottom())->pcol_l_;
assert(stems.size()>1);
- if (!dir)
+ if (!dir_i_)
set_default_dir();
}
Real dy=paper()->internote()*2;
Real stemdx = paper()->rule_thickness();
Real sl = slope*paper()->internote();
- paper()->lookup_p_->beam(sl, convert_dimen(20,"pt"));
+ paper()->lookup_p_->beam(sl, 20 PT);
Molecule leftbeams;
Molecule rightbeams;
a.translate(Offset (-w, -w * sl));
for (int j = 0; j < lhalfs; j++) {
Atom b(a);
- b.translate(Offset(0, -dir * dy * (lwholebeams+j)));
+ b.translate(Offset(0, -dir_i_ * dy * (lwholebeams+j)));
leftbeams.add( b );
}
}
int j = 0;
for (; j < rwholebeams; j++) {
Atom b(a);
- b.translate(Offset(0, -dir * dy * j));
+ b.translate(Offset(0, -dir_i_ * dy * j));
rightbeams.add( b );
}
w /= 4;
for (; j < rwholebeams + rhalfs; j++) {
Atom b(a);
- b.translate(Offset(0, -dir * dy * j));
+ b.translate(Offset(0, -dir_i_ * dy * j));
rightbeams.add(b );
}
Directional_spanner::Directional_spanner()
{
- dir = 0;
+ dir_i_ = 0;
}
#include "textspanner.hh"
#include "textdef.hh"
#include "debug.hh"
+#include "paper.hh"
NAME_METHOD(Text_spanner);
{
switch(spec.align_i_) {
case 0:
- tpos = support->center();
+ text_off_ = support->center() +
+ Offset(0,support->dir_i_ * paper()->internote() * 4); // todo
break;
default:
assert(false);
break;
- }
-
-
+ }
}
+
Molecule*
Text_spanner::brew_molecule_p() const
{
Atom tsym (spec.create_atom(paper()));
- tsym.translate(tpos);
+ tsym.translate(text_off_);
Molecule*output = new Molecule;
output->add( tsym );