[xiph-commits] r18286 - trunk/spectrum
xiphmont at svn.xiph.org
xiphmont at svn.xiph.org
Wed May 16 02:59:12 PDT 2012
Author: xiphmont
Date: 2012-05-16 02:59:11 -0700 (Wed, 16 May 2012)
New Revision: 18286
Modified:
trunk/spectrum/analyzer.h
trunk/spectrum/fisharray.h
trunk/spectrum/spec_panel.c
trunk/spectrum/spec_plot.c
trunk/spectrum/spec_plot.h
trunk/spectrum/spectrum-gtkrc
trunk/spectrum/spectrum.c
trunk/spectrum/version.h
trunk/spectrum/wave_panel.c
trunk/spectrum/waveform-gtkrc
Log:
More layout rearrangement, move display-specific buttons to top of plot
Modified: trunk/spectrum/analyzer.h
===================================================================
--- trunk/spectrum/analyzer.h 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/analyzer.h 2012-05-16 09:59:11 UTC (rev 18286)
@@ -78,7 +78,7 @@
extern int eventpipe[2];
-extern void panel_go(int argc,char *argv[], int bold);
+extern void panel_go(int argc,char *argv[]);
extern int input_load();
extern void *process_thread(void *dummy);
extern void process_dump(int mode);
Modified: trunk/spectrum/fisharray.h
===================================================================
--- trunk/spectrum/fisharray.h 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/fisharray.h 2012-05-16 09:59:11 UTC (rev 18286)
@@ -1,278 +1,276 @@
/* XPM */
-static char * fisharray[] = {
-"532 25 250 2",
+static char * fisharray_xpm[] = {
+"532 25 248 2",
" c None",
-". c #000000",
-"+ c #00004F",
-"@ c #001416",
-"# c #00136A",
-"$ c #00196E",
-"% c #00205F",
-"& c #002727",
-"* c #002074",
-"= c #00246D",
-"- c #002478",
-"; c #002878",
-"> c #002E77",
-", c #00307E",
-"' c #00338A",
-") c #00377E",
-"! c #193648",
-"~ c #003B88",
-"{ c #003D77",
-"] c #343913",
-"^ c #004492",
-"/ c #00468C",
-"( c #004887",
-"_ c #134663",
-": c #064C73",
-"< c #244859",
-"[ c #004E8D",
-"} c #17497C",
-"| c #004D9E",
-"1 c #3B417D",
-"2 c #005398",
-"3 c #005794",
-"4 c #3C5144",
-"5 c #47487E",
-"6 c #015F8F",
-"7 c #005E9D",
-"8 c #475253",
-"9 c #4B5439",
-"0 c #00639A",
-"a c #0062A7",
-"b c #535730",
-"c c #365B63",
-"d c #485288",
-"e c #006CA2",
-"f c #006F9D",
-"g c #006FB3",
-"h c #A45300",
-"i c #575C8A",
-"j c #546391",
-"k c #297383",
-"l c #7C6720",
-"m c #64648D",
-"n c #5E688F",
-"o c #0B7FB5",
-"p c #0C819F",
-"q c #9F6D00",
-"r c #547691",
-"s c #058AB4",
-"t c #577C5B",
-"u c #18889F",
-"v c #767454",
-"w c #7C793C",
-"x c #0791AD",
-"y c #717495",
-"z c #747773",
-"A c #B27400",
-"B c #67863F",
-"C c #78824F",
-"D c #6C7EA4",
-"E c #8E8423",
-"F c #538F71",
-"G c #03A1B3",
-"H c #AC8203",
-"I c #898276",
-"J c #109FC3",
-"K c #C27E00",
-"L c #868297",
-"M c #6E9243",
-"N c #21A2B8",
-"O c #8D898D",
-"P c #C38800",
-"Q c #959142",
-"R c #629D67",
-"S c #83974B",
-"T c #819295",
-"U c #14AFC8",
-"V c #3EA899",
-"W c #11B2C2",
-"X c #0CB8C2",
-"Y c #B39162",
-"Z c #9E9773",
-"` c #34B1AA",
-" . c #A19D3E",
-".. c #FF8800",
-"+. c #F48C00",
-"@. c #16BCBE",
-"#. c #AAA121",
-"$. c #FF8E00",
-"%. c #32B8BD",
-"&. c #5BB579",
-"*. c #9AA93D",
-"=. c #86A3B8",
-"-. c #16C2DA",
-";. c #FE9400",
-">. c #FF9400",
-",. c #F29800",
-"'. c #ED9A00",
-"). c #F99700",
-"!. c #4CBC94",
-"~. c #44BFA2",
-"{. c #24C5C8",
-"]. c #2EC2CE",
-"^. c #E3A100",
-"/. c #EA9F00",
-"(. c #FD9A00",
-"_. c #CFA708",
-":. c #F09E00",
-"<. c #FE9A00",
-"[. c #C3A82D",
-"}. c #38C2C7",
-"|. c #CDA547",
-"1. c #DFA700",
-"2. c #FB9F00",
-"3. c #29CAC4",
-"4. c #E5A517",
-"5. c #1CD0C9",
-"6. c #D8AC0D",
-"7. c #C9B10D",
-"8. c #E4A72D",
-"9. c #D8AA39",
-"0. c #6DC388",
-"a. c #3DCCC7",
-"b. c #D9AF1C",
-"c. c #D9AE2C",
-"d. c #FDA900",
-"e. c #72BFC3",
-"f. c #B1BC2D",
-"g. c #CCB524",
-"h. c #CEAF62",
-"i. c #BDB938",
-"j. c #33D3CD",
-"k. c #7DBEC5",
-"l. c #F2AE0E",
-"m. c #B5BD3B",
-"n. c #A8BF4F",
-"o. c #7FC77D",
-"p. c #C0BC2C",
-"q. c #FBAF00",
-"r. c #31D7C8",
-"s. c #F9B100",
-"t. c #34D5E3",
-"u. c #D0B557",
-"v. c #8ACA62",
-"w. c #8CC0C2",
-"x. c #34D8D9",
-"y. c #A2C462",
-"z. c #EFB517",
-"A. c #F0B701",
-"B. c #FBB400",
-"C. c #41D7C9",
-"D. c #EDB42C",
-"E. c #8DCA73",
-"F. c #56D3C0",
-"G. c #A5C47C",
-"H. c #ACC757",
-"I. c #4BD9C3",
-"J. c #9AC2C5",
-"K. c #D8BA77",
-"L. c #87D378",
-"M. c #64D8AF",
-"N. c #C9BE9E",
-"O. c #F5C011",
-"P. c #3EE3D4",
-"Q. c #EEBD4D",
-"R. c #94D473",
-"S. c #FDBF0E",
-"T. c #BDCC4B",
-"U. c #FFC000",
-"V. c #9ED26D",
-"W. c #B3C89D",
-"X. c #FBBF23",
-"Y. c #C2C2AE",
-"Z. c #EAC51C",
-"`. c #C2C2B9",
-" + c #6DDDA8",
-".+ c #4FE3C8",
-"++ c #A9D362",
-"@+ c #F0C337",
-"#+ c #79DE91",
-"$+ c #FDC50C",
-"%+ c #F3C05B",
-"&+ c #B4D459",
-"*+ c #94D988",
-"=+ c #9DD2B3",
-"-+ c #42E8E8",
-";+ c #D5CE39",
-">+ c #DEC38F",
-",+ c #62E5AC",
-"'+ c #57E4DF",
-")+ c #E2CD33",
-"!+ c #8ADE91",
-"~+ c #EACD21",
-"{+ c #EDC56D",
-"]+ c #7AE2A2",
-"^+ c #FFC91B",
-"/+ c #44EFD7",
-"(+ c #38F2E4",
-"_+ c #FFCA27",
-":+ c #FACD1C",
-"<+ c #FDCE11",
-"[+ c #FBCE28",
-"}+ c #EFCA7D",
-"|+ c #5CEED0",
-"1+ c #F2CE59",
-"2+ c #8DE891",
-"3+ c #52F3D4",
-"4+ c #5CEFE2",
-"5+ c #67EFC3",
-"6+ c #58F2DC",
-"7+ c #EECE8C",
-"8+ c #66EFD8",
-"9+ c #A7E784",
-"0+ c #87EEA1",
-"a+ c #F3D36F",
-"b+ c #D0D4D0",
-"c+ c #9EEA8E",
-"d+ c #42FDE3",
-"e+ c #77F2B9",
-"f+ c #54F7F4",
-"g+ c #58F9D9",
-"h+ c #49FDEB",
-"i+ c #7FF3B1",
-"j+ c #48FDF3",
-"k+ c #54FEE5",
-"l+ c #6EF9D4",
-"m+ c #68FADC",
-"n+ c #62FBE4",
-"o+ c #5CFEEE",
-"p+ c #5EFFDF",
-"q+ c #F2DAAA",
-"r+ c #66FFD8",
-"s+ c #DADDD8",
-"t+ c #F3DC9E",
-"u+ c #77FED0",
-"v+ c #F0DEBD",
-"w+ c #E8E9E4",
-"x+ c #F7EBCC",
-"y+ c #F9F4E2",
-"z+ c #F8F7EB",
-"A+ c #F5F9F5",
-" j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j
j j ",
-" 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1
1 * * 1 ",
-" m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m n $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ n m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m
m $ , , $ m ",
-" 5 - , , , , - 5 5 - ; , , , - 5 5 - , ; , , - 5 5 - , , , , - 5 5 - , , ; , - 5 5 - , , , ; - 5 5 - , , , , - 5 5 ; , , , , - 5 5 - , , ; , - 5 5 - , , , , - 5 5 - , ; , , - 5 5 - , , , , ; 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5
5 - , , , , - 5 ",
-" n $ ~ 3 e 0 2 , $ n n $ , ~ [ 7 / , $ n n $ , 3 0 0 , , $ n n $ , , ( ( , , $ n n $ , , 0 0 3 , $ n n $ , / 7 [ ~ , $ n n $ , 2 0 e 3 ~ $ n n $ ~ 2 0 0 ( , $ n n $ , , / 3 ~ ' $ n n $ , , / / , , $ n n $ ' ~ 3 / , , $ n n $ , ( 0 0 2 ~ $ n n $ ~ 3 e 0 2 , $ n n $ ~ 3 e 0 2 , $ n n $ ~ 3 e 0 2 , $ n n $ ~ 3 e 0 2 , $ n n $ ~ 3 e 0 2 , $ n n $ ~ 3 e 0 2 , $
n n $ ~ 3 e 0 2 , $ n ",
-" d - o -+6+m+m+4+t.o - d d - ' a ].8+4+'+N | - d d - , 0 I.3+3+C.( , - d d - , , [ a.a.[ , , - d d - , ( C.3+3+I.0 , - d d - | N '+4+8+].a ' - d d - o t.4+m+m+6+-+o - d d - f ].|+g+g+8+U ~ - d d - , , f }.6+I.6 , - d d - , , , W W , , , - d d - , 6 I.6+}.f , , - d d - ~ U 8+g+g+|+].f - d d - o -+6+m+m+4+t.o - d d - o -+6+m+m+4+t.o - d d - o -+6+m+m+4+t.o - d d - o -+6+m+m+4+t.o - d d - o -+6+m+m+4+t.o - d d - o -+6+m+m+4+t.o
- d d - o -+6+m+m+4+t.o - d ",
-" O { a.m+g+k+p+r+r+r+n+g # n O } k V 5+8+n+k+p+m+'+^ # n n % c < V *+*+e+r+3.[ , # n n # , , c =+!+!+=+c , , # n n # , [ 3.r+e+*+*+V < c % n n # ^ '+m+p+k+n+8+5+V k } O n # g n+r+r+r+p+k+g+m+a.{ O n # 0 a.l+r+p+k+n+n+].6 = m n # , , / {.p+p+m+|+x } # n n # , , ) k C.C.k ) , , # n n # } x |+m+p+p+{./ , , # n m = 6 ].n+n+k+p+r+l+a.0 # n O { a.m+g+k+p+r+r+r+n+g # n O { a.m+g+k+p+r+r+r+n+g # n O { a.m+g+k+p+r+r+r+n+g # n O { a.m+g+k+p+r+r+r+n+g # n O { a.m+g+k+p+r+r+r+n+g # n O { a.m+g+k+p+r+r+r+n+
g # n O { a.m+g+k+p+r+r+r+n+g # n ",
-" t+v+9.+.'./.m.e+h+p+r+r+(+s - i 7+>+x+x+l.).:.i.e+j+p+r+U ' ; i i ; Z y+t+8.x+x+c.r+r+{.~ , - i i - , , r z+A+x+x+A+z+r , , - i i - , ~ {.r+r+c.x+x+8.t+y+Z ; i i ; ' U r+p+j+e+i.:.).l.x+x+>+7+ i - s (+r+r+p+h+e+m./.'.+.9.v+t+ i - / %.k+p+j+h+5+g.6.6.b.h.>+Z i / / , 3 }.m+r+p+V.g.u.w+r - i i - , , , b+u..+.+u.s+, , , - i i - r w+u.g.V.p+r+m+}.3 , / / i Z >+h.b.6.6.g.5+h+j+p+k+%./ - i D.4.4.+.'./.m.e+h+p+r+r+(+s - i D.4.4.+.'./.m.e+h+p+r+r+(+s - i D.4.4.+.'./.m.e+h+p+r+r+(+s - i D.4.4.+.'./.m.e+h+p+r+r+(+s - i D.4.4.+.'./.m.e+h+p+r+r+(+s - i D.4.4.+.'./.m.e+h+p+r+r+
(+s - i D.4.4.+.'./.m.e+h+p+r+r+(+s - i ",
-" v+A+b+z+4.q.<.$.).g.]+k+r+r+p+-.# m e.e. q+}+z+b+s+q+s.2.$.'.H.n+k+p+N , # n e.e. m # , q+`.s+q+s+Y.x+p.u+3+p e e # m m # , , , T b+] x+x+] b+T , , , # m m # e e p 3+u+p.x+Y.s+q+s+`.q+, # m e.e.n # , N p+k+n+H.'.$.2.s.q+s+b+z+}+q+ e.e. m # -.p+r+r+k+]+g.).$.<.q.4.z+b+A+v+ w.{.J.m # , J f+h+j+]+i.;.$.;.d.%+z+s+Y.L m r+j.j.~ p x.p+!+i.).2.x+w+w+, # m m # , , , T y+2./+/+2.y+T , , , # m m # , w+w+x+2.).i.!+p+x.p ~ j.j.r+m L Y.s+z+%+d.;.$.;.i.]+j+h+f+J , # m J.{.w. |.c.c.9.4.q.<.$.).g.]+k+r+r+p+-.# m e.e. 4. at +1+Q.4.q.<.$.).g.]+k+r+r+p+-.# m e.e. @+1+1+1+4.q.<.$.).g.]+k+r+r+p+-.# m e.e. @+1+1+1+4.q.<.$.).g.]+k+r+r+p+-.# m e.e. @+1+1+1+4.q.<.$.).g.]+k+r+r+p+-.# m e.e. 4. at +1+Q.4.q.<.$.).g.]+k+r+
r+p+-.# m e.e. |.c.c.9.4.q.<.$.).g.]+k+r+r+p+-.# m e.e. ",
-" s.z+`.. w+{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3. K.X.D.A+z 8 x+z.:+2.).$.g.o+k+6+2 / s r+r+3. m - , , x+I Q v+v b A+1.6.]+I.r+r+f - m m - , , , , w A+A+t+t+A+A+w , , , , - m m - f r+r+I.]+6.1.A+b v v+Q I x+, , - m 3.r+r+s / 2 6+k+o+g.$.).2.:+z.x+8 z A+D.X.K. 3.r+d+j+6 - 2 n+p+p+o+V.).>.<.<.^+^+{+w+. `.z+s. %.r+r.G / g x.h+j+!+).>.;.).s.[+{+s+. s+K.m m - C.r+k+j.{.h+R.,.;.;.O.|.. w+l , - m m - , , , , =.{+>./+/+>.%+=., , , , - m m - , l w+. |.O.;.;.,.R.h+{.j.k+r+C.- m m K.s+. s+{+[+s.).;.>.).!+j+h+x.g / G r.r+%. s.z+`.. w+{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3. s.y+P P K.{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3. ^.1+1+1+1+P ^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3. s.1+1+1+1+{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3. ^.1+1+1+1+P ^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3. s.y+P P K.{+^+^+<.<.>.).V.o+
p+p+n+2 - 6 j+d+r+3. s.z+`.. w+{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3.",
-" N.q.O.q+A+s+z+D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3. W.q.S.X.x+A+w+7+$+[+S.;.<.$.g. +6+U X p+r+r+5. m # , [ f G.n.)+Q.z+A+q+O.<.:.^.0+r+f , # m m # , , , , ) [. at +G.G.G.G.@+[.) , , , , # m m # , f r+0+^.:.<.O.q+A+z+Q.)+n.G.f [ , # m 5.r+r+p+X U 6+ +g.$.<.;.S.[+$+7+w+A+x+X.S.q.W. 3.r+r+r+k+t.-.h+g+!+g.;.(.<.;.s.[+:+D.z+s+A+q+O.q.N. 3.m+g+6+x.3.h+,+g.).>.).;.2.^+[+ at +v+s+A+D.! m m # , W p+k+k+ +H.,.).).).q.[+h.x+b.: , # m m # , , , , , C S.>.]+]+>.^+C , , , , , # m m # , : b.x+h.[+q.).).).,.H. +k+k+p+W , # m m ! D.A+s+v+ at +[+^+2.;.).>.).g.,+h+3.x.6+g+m+3. N.q.O.q+A+s+z+D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3. N.q.O.q+x+t+z+D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3. N.q.O.9.c.c.9.D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3. N.q.z.%+1+1+1+8.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3. N.q.O.9.c.c.9.D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3. N.q.O.q+x+t+z+D.:+[+s.;.<.(.;.g.
!+g+h+-.t.k+r+r+r+3. N.q.O.q+A+s+z+D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3.",
-"w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w. X X T.<+$+z.7+}+X.:+[+^+;.>.,.;.;.6.n.i+r+r+g+w. y - , , f r+r+r+ +_+Q.%+_+_+S.d.6.++r+f , , - y y - , , , , , { b.)+5+u+u+5+)+b.{ , , , , , - y y - , , f r+++6.d.S._+_+%+Q._+ +r+r+r+f , , - y w.g+r+r+i+n.6.;.;.,.>.;.^+[+:+X.}+7+z.$+<+T.X X w.3+r+r+p+R.p.7.).<.<.<.<.<.>.^+_+:+$+Q.v+7+l.:+$+&.X w. e.l+r+h+ +A.1.).;.;.,.<.).2.[+^+[+_+v+7+1.o.x y y - , , f r+k+T.<.$.).).).).;.[+a+ at +[+p , , - y y - , , , , , , Q ^+>.!+!+>.^+Q , , , , , , - y y - , , p [+ at +a+[+;.).).).).$.<.T.k+r+f , , - y y x o.1.7+v+_+[+^+[+2.).<.,.;.;.).1.A. +h+r+l+e. w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+P Q.1+9.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.
<.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.",
-"3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C. %.u+k+r.T.$+:+O.$+:+[+^+~+R.!+,+_.(.;.).]+r+r+3.} + , , , r.r+r.r.3+ + at +z.g.T.*+E.'.T.r+p , , , + + , , , , p u p g.M..+r.r..+M.g.p u p , , , , + + , , , p r+T.'.E.*+T.g.z. at + +3+r.r.r+r., , , + } 3.r+r+]+).;.(._.,+!+R.~+^+[+:+$+O.:+$+T.r.k+u+%. C.r+r+p+R.$.;.(.<.:.,+#+L.v.)+^+_+:+<+O.$+:+:+0.(+u+3. j.r+p+e+'.).).).;.:.L. +!+)+:+^+:+O.:+V.l+.+= + , , , , j.p+!+<.<.).).).,.g.e+!+[+!+I., , , + + , , , , , a.a.o.^+(.!+!+(.^+o.%.a., , , , , + + , , , I.!+[+!+e+g.,.).).).<.<.!+p+j., , , , + = .+l+V.:+O.:+^+:+)+!+ +L.:.;.).).).'.e+p+r+j. 3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C. 3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C. 3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C. 3.u+(+0.:+:+6.6.O.:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C. 3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C. 3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.
<.(.;.$.R.p+r+r+C. 3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C. ",
-"w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5. X /+k+X ;+^+[+[+[+^+$+c+o+f+#+).<.;./.5+r+r.- y y - , , r.r+. . . @.M.[+e+r+r+6+/.T.C., , , - y y - , , , u+u+e+)+l+& . . & l+Z.e+u+u+, , , - y y - , , , C.T./.6+r+r+e+[+M. at .. . . r+r., , - y y - r.r+5+/.;.<.).#+f+o+c+$+^+[+[+[+^+;+X k+/+X 5.r+p+r+,.<.<.<.;.f.k+n+n+i+:+^+_+_+_+^+^+0.j+p+X w. j.r+l+1.).<.>.;.,.g.o+j+0+:+_+^+^+V.u+C.- y y - , , , X r+j+6.<.<.;.;.,.P r+j+;+u+f , , - y y - , , , , C.r+c+^+(.!+!+(.^+c+r+C., , , , - y y - , , f u+;+j+r+P ,.;.;.<.<.6.j+r+X , , , - y y - C.u+V.^+^+_+:+0+j+o+g.,.;.>.<.).1.l+r+j. w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5. w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5. w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5. w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5. w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5. w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.
<.<.<.,.r+p+r+5. w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5. ",
-" j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5. D p h+M.~+^+[+^+^+&+k+m+*+,.;.;.).H.r+r+r.m m # , [ r.@ . . @ !.)+5+3+3+E.1.H.3.; , # m m # , , W u+e+y.G . . . . G y.e+u+W , , # m m # , ; 3.H.1.E.3+3+5+)+!.@ . . @ r.[ , # m m r.r+r+H.).;.;.,.*+m+k+&+^+^+[+^+~+M.h+p D 5.r+r+o+i.;.<.<.).).p.5+d+k+2+:+_+_+_+^+&+(+j. j.r+p+!+1.).<.;.).;.*.h+o+9+_+^+^+c+3.> m m # , , X r+l+H.<.).;.;.).P *+j+)+F., , # m m # , , , u N c S.>.!+!+>.S.c N u , , , # m m # , , F.)+j+*+P ).;.;.).<.H.l+r+X , , # m m > 3.c+^+^+_+9+o+h+*.;.).;.<.).1.!+p+r+j. j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5. j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5. j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5. j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5. j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5. j.(+&+^+_+_+_+:+2+k+d+5+p.).).
<.<.;.i.o+r+r+5. j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5. ",
-" X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5. X g+h+&+^+[+[+[+)+1./...(.(.).6.l+r+r+r. m - , , X I.I.X ~._+[+!+]+<.H.r+X , - m m - , , p ~.y.l+.+I.I..+u+y.~.p , , - m m - , X r+H.<.]+!+[+_+~.X I.I.X , , - m r.r+r+l+6.).(.(.../.1.)+[+[+[+^+&+h+g+X 5.r+r+p+5+:.;.>.>.>.>.)./.^.Z.:+_+_+_+^+0+p+X X j.r+r+j+*+,.>.>.<.<.).'./.B.^+^+^+0+u+` m - , X r+l+]+2.(.>.).).).d.S.&+u+p - m m - , , , , , q.>.!+!+>.q., , , , , - m m - p u+&+S.d.).).).>.(.2.]+l+r+X , - m ` u+0+^+^+^+B./.'.).<.<.>.>.,.*+j+r+r+j. X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5. X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5. X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5. X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5. X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5. X X p+0+^+_+_+_+:+Z.^./.).>.>.>.
>.;.:.5+p+r+r+5. X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5. ",
-" w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5. k.5.5.I.)+<+<+<+U.(.<.6.H.R 4 F !.k+r+r+{. m # , V |+|+0.)+S.s.'./.++u+/+e # m m # , , ) Q H..+|+|+.+H.Q ) , , # m m # e /+u+++/.'.s.S.)+0.|+|+V , # m {.r+r+k+!.F 4 R H.6.<.(.U.<+<+<+)+I.5.5.k. 5.r+r+r+p+5+V.v.M B n.g.'.$.(.q.$+<+<+$+&+.+r.r.w. j.r+r+r+l+R.m.#.i.i.*+b.).,./.A.S.V.r.e. m # X r+l+h+R.i.g.g.y.^.'.1.t f * m m # , , , , K '.!+!+'.K , , , , # m m * f t 1.'.^.y.g.g.i.R.h+l+r+X # m e.r.V.S.A./.,.).b.*+i.i.#.m.R.l+r+r+r+j. w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5. w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5. w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5. w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5. w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5. w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M
v.V.5+p+r+r+r+5. w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5. ",
-" Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{. T 4 A P H q w M.-+t.a , , a P.P.P.k. i - : E E H ).K A *.3+p G G ; i i - , , , .b.l.l.b. ., , , - i i ; G G p 3+*.A K ).H E E : - i k.P.P.P.a , , a t.-+M.w q H P A 4 T {.3+g+g+P.W a ' , ^ t.f+f+]+S q A A h Y 3.6+6+.+X G | g ].o -+f+{.E l b 9 I i G l+l+|+8+}.J J f+C.b ) , - i i - , , , { +#+#+ +{ , , , - i i - , ) b C.f+J J }.8+|+l+l+G i I 9 b l E {.f+-+o ].g | G X .+6+6+3. Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{. Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{. Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{. Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{. Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{. Y h A A q S ]+f+f+t.^ ,
' a W P.g+g+3+{. Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{. ",
-" n # , , , | a 7 ^ , , , # n J.J.J.J. m = , > , ' ' | ^ , , , # n n # , < 4 4 _ 3 3 3 ~ , # n n # , , [ 6 < 8 6 [ , , # n n # , ~ 3 3 3 _ 4 4 < , # n n # , , , ^ | ' ' , > , = m J.J.J.J.n # , , , ^ 7 a | , , , # n k.k.k.) , , , / ~ 3 7 ~ , , # n n u {.3 , / , 2 0 2 , , # n n # , , ) f @. at .f ) , , # n n # , , 2 0 2 , / , 3 {.u n n # , , ~ 7 3 ~ / , , , ) k.k.k. n # , , , | a 7 ^ , , , # n J.J.J.J. n # , , , | a 7 ^ , , , # n J.J.J.J. n # , , , | a 7 ^ , , , # n J.J.J.J. n # , , , | a 7 ^ , , , # n J.J.J.J. n # , , , | a 7 ^ , , , # n J.J.J.J. n # , , , | a 7 ^ , ,
, # n J.J.J.J. n # , , , | a 7 ^ , , , # n J.J.J.J. ",
-" d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , ( ( , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , , - d d - , , , , , , , ,
- d d - , , , , , , , , - d ",
-" n $ , , , , , , $ n n # , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , # n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $ n n $ , , , , , , $
n n $ , , , , , , $ n ",
-" 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5 5 - , , , , - 5
5 - , , , , - 5 ",
-" m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m m $ , , $ m
m $ , , $ m ",
-" 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1 1 * * 1
1 * * 1 ",
-" j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j
j j "};
+". c #546392",
+"+ c #3B417D",
+"@ c #002174",
+"# c #65658D",
+"$ c #001A6E",
+"% c #002F7E",
+"& c #5E6990",
+"* c #47497F",
+"= c #002578",
+"- c #002878",
+"; c #003A88",
+"> c #005794",
+", c #006BA2",
+"' c #00629A",
+") c #005298",
+"! c #00508E",
+"~ c #005D9E",
+"{ c #00458C",
+"] c #004A88",
+"^ c #00348A",
+"/ c #485388",
+"( c #0B7FB5",
+"_ c #42E6E8",
+": c #58F2DA",
+"< c #69F9DC",
+"[ c #5DEFE3",
+"} c #35D4E3",
+"| c #0063A8",
+"1 c #2EC1CE",
+"2 c #67EFD7",
+"3 c #58E4DF",
+"4 c #21A2B9",
+"5 c #004E9E",
+"6 c #4BD9C3",
+"7 c #53F3D3",
+"8 c #41D7CB",
+"9 c #3ECCC7",
+"0 c #00709E",
+"a c #5CEED1",
+"b c #59F9D9",
+"c c #14B1C8",
+"d c #39C2C7",
+"e c #015F8F",
+"f c #11B4C3",
+"g c #8D898D",
+"h c #003E78",
+"i c #54FEE4",
+"j c #60FEDF",
+"k c #68FED9",
+"l c #63FBE3",
+"m c #006EB4",
+"n c #00146A",
+"o c #17497D",
+"p c #297383",
+"q c #3EA898",
+"r c #67EFC4",
+"s c #004592",
+"t c #002060",
+"u c #365C64",
+"v c #24495A",
+"w c #94D989",
+"x c #78F2BA",
+"y c #29CBC5",
+"z c #9ED2B4",
+"A c #8ADE92",
+"B c #6FF9D3",
+"C c #00246E",
+"D c #24C6C8",
+"E c #0790AD",
+"F c #00387E",
+"G c #F0DEAC",
+"H c #EFE1C5",
+"I c #D4AE54",
+"J c #EF9117",
+"K c #F3A715",
+"L c #F3AB11",
+"M c #B9C050",
+"N c #4AFCEA",
+"O c #38F2E2",
+"P c #0589B5",
+"Q c #575C8B",
+"R c #EBD29B",
+"S c #DEC89E",
+"T c #F5ECD3",
+"U c #E8B230",
+"V c #F29F1C",
+"W c #F3A817",
+"X c #C1BD4D",
+"Y c #4AFCF2",
+"Z c #A5A083",
+"` c #F8F4E6",
+" . c #DEAB4A",
+".. c #D4B24A",
+"+. c #547792",
+"@. c #F8F7EE",
+"#. c #F5F9F5",
+"$. c #32B9BE",
+"%. c #D2BE38",
+"&. c #E5B81B",
+"*. c #DAB534",
+"=. c #CDB477",
+"-. c #A3D177",
+";. c #CFB96D",
+">. c #EAEBE7",
+",. c #D0D4D0",
+"'. c #4FE3C9",
+"). c #DBDDD9",
+"!. c #E6B84A",
+"~. c #E0A934",
+"{. c #F4B520",
+"]. c #F2A020",
+"^. c #F09520",
+"/. c #79E1A0",
+"(. c #16C1DA",
+"_. c #73BEC3",
+":. c #EFDBB5",
+"<. c #EBCE8F",
+"[. c #F3B51F",
+"}. c #F3A61F",
+"|. c #B0C76B",
+"1. c #C7C7C1",
+"2. c #C6C6B6",
+"3. c #C9C43D",
+"4. c #79FDD0",
+"5. c #0C82A0",
+"6. c #819295",
+"7. c #4F5620",
+"8. c #8CC0C2",
+"9. c #9BC3C5",
+"0. c #10A0C4",
+"a. c #55F7F5",
+"b. c #F19B1F",
+"c. c #F4AC22",
+"d. c #EDC371",
+"e. c #878397",
+"f. c #33D3CD",
+"g. c #35D7D9",
+"h. c #45EFD9",
+"i. c #CBAB5F",
+"j. c #E9C453",
+"k. c #ECD070",
+"l. c #E8C266",
+"m. c #000000",
+"n. c #E9C881",
+"o. c #F4C73C",
+"p. c #F19B21",
+"q. c #5DFDEC",
+"r. c #44FCE4",
+"s. c #D7BE89",
+"t. c #F1C141",
+"u. c #747773",
+"v. c #475253",
+"w. c #E6B738",
+"x. c #F0CC3C",
+"y. c #928D84",
+"z. c #A49F50",
+"A. c #858363",
+"B. c #686C40",
+"C. c #F0B70C",
+"D. c #8D8A49",
+"E. c #32D6C9",
+"F. c #03A0B3",
+"G. c #F1CB47",
+"H. c #94D474",
+"I. c #F3A317",
+"J. c #EBC233",
+"K. c #917B2D",
+"L. c #85A2B7",
+"M. c #D79B0B",
+"N. c #F2AE0C",
+"O. c #CCC4AA",
+"P. c #B8CAA4",
+"Q. c #F2BE30",
+"R. c #F2C62E",
+"S. c #6DDDA7",
+"T. c #0CB7C2",
+"U. c #1CD0C9",
+"V. c #AAC587",
+"W. c #ADC064",
+"X. c #DDCA4F",
+"Y. c #88EEA3",
+"Z. c #C9B141",
+"`. c #63E5AC",
+" + c #193649",
+".+ c #064C74",
+"++ c #86915D",
+"@+ c #5BB579",
+"#+ c #F5CA45",
+"$+ c #D9C019",
+"%+ c #C0CB63",
+"&+ c #F2CC32",
+"*+ c #7FF3B0",
+"=+ c #717495",
+"-+ c #AFD175",
+";+ c #F2BD1A",
+">+ c #7FC77D",
+",+ c #EED382",
+"'+ c #6DC387",
+")+ c #8BCA64",
+"!+ c #88D379",
+"~+ c #7ADE92",
+"{+ c #E3CA3F",
+"]+ c #DFB715",
+"^+ c #000050",
+"/+ c #8ECA74",
+"(+ c #1888A0",
+"_+ c #64D8AE",
+":+ c #BCC73D",
+"<+ c #D1CD53",
+"[+ c #9DEA8E",
+"}+ c #16BCBE",
+"|+ c #002828",
+"1+ c #E2C53C",
+"2+ c #B8D270",
+"3+ c #8EE892",
+"4+ c #6C7EA4",
+"5+ c #001416",
+"6+ c #4CBC93",
+"7+ c #AAC575",
+"8+ c #A8B64A",
+"9+ c #A8E785",
+"0+ c #002D78",
+"a+ c #57D3C0",
+"b+ c #EF901F",
+"c+ c #45BFA1",
+"d+ c #34B2AA",
+"e+ c #73924A",
+"f+ c #779C4C",
+"g+ c #7DBDC5",
+"h+ c #F4C024",
+"i+ c #639D68",
+"j+ c #3C5244",
+"k+ c #538F71",
+"l+ c #BCB42E",
+"m+ c #577D5C",
+"n+ c #D5900B",
+"o+ c #B49972",
+"p+ c #A95E0D",
+"q+ c #C8870A",
+"r+ c #B8810A",
+"s+ c #8FA458",
+"t+ c #3FE3D5",
+"u+ c #C2960E",
+"v+ c #A29830",
+"w+ c #B0AC4C",
+"x+ c #5E684A",
+"y+ c #134663",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . ",
+" + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ +
+ @ @ + ",
+" # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # & $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ & # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ #
# $ % % $ # ",
+" * = % % % % = * * = - % % % = * * = % - % % = * * = % % % % = * * = % % - % = * * = % % % - = * * = % % % % = * * - % % % % = * * = % % - % = * * = % % % % = * * = % - % % = * * = % % % % - * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = *
* = % % % % = * ",
+" & $ ; > , ' ) % $ & & $ % ; ! ~ { % $ & & $ % > ' ' % % $ & & $ % % ] ] % % $ & & $ % % ' ' > % $ & & $ % { ~ ! ; % $ & & $ % ) ' , > ; $ & & $ ; ) ' ' ] % $ & & $ % % { > ; ^ $ & & $ % % { { % % $ & & $ ^ ; > { % % $ & & $ % ] ' ' ) ; $ & & $ ; > , ' ) % $ & & $ ; > , ' ) % $ & & $ ; > , ' ) % $ & & $ ; > , ' ) % $ & & $ ; > , ' ) % $ & & $ ; > , ' ) % $
& & $ ; > , ' ) % $ & ",
+" / = ( _ : < < [ } ( = / / = ^ | 1 2 [ 3 4 5 = / / = % ' 6 7 7 8 ] % = / / = % % ! 9 9 ! % % = / / = % ] 8 7 7 6 ' % = / / = 5 4 3 [ 2 1 | ^ = / / = ( } [ < < : _ ( = / / = 0 1 a b b 2 c ; = / / = % % 0 d : 6 e % = / / = % % % f f % % % = / / = % e 6 : d 0 % % = / / = ; c 2 b b a 1 0 = / / = ( _ : < < [ } ( = / / = ( _ : < < [ } ( = / / = ( _ : < < [ } ( = / / = ( _ : < < [ } ( = / / = ( _ : < < [ } ( = / / = ( _ : < < [ } (
= / / = ( _ : < < [ } ( = / ",
+" g h 9 < b i j k k k l m n & g o p q r 2 l i j < 3 s n & & t u v q w w x k y ! % n & & n % % u z A A z u % % n & & n % ! y k x w w q v u t & & n s 3 < j i l 2 r q p o g & n m l k k k j i b < 9 h g & n ' 9 B k j i l l 1 e C # & n % % { D j j < a E o n & & n % % F p 8 8 p F % % n & & n o E a < j j D { % % n & # C e 1 l l i j k B 9 ' n & g h 9 < b i j k k k l m n & g h 9 < b i j k k k l m n & g h 9 < b i j k k k l m n & g h 9 < b i j k k k l m n & g h 9 < b i j k k k l m n & g h 9 < b i j k k k l
m n & g h 9 < b i j k k k l m n & ",
+" G H I J K L M x N j k k O P = Q R S T T U V W X x Y j k c ^ - Q Q - Z ` G .T T ..k k D ; % = Q Q = % % +. at .#.T T #. at .+.% % = Q Q = % ; D k k ..T T .G ` Z - Q Q - ^ c k j Y x X W V U T T S R Q = P O k k j N x M L K J I H G Q = { $.i j Y N r %.&.&.*.=.S Z Q { { % > d < k j -.%.;.>.+.= Q Q = % % % ,.;.'.'.;.).% % % = Q Q = +.>.;.%.-.j k < d > % { { Q Z S =.*.&.&.%.r N Y j i $.{ = Q !.~.~.J K L M x N j k k O P = Q !.~.~.J K L M x N j k k O P = Q !.~.~.J K L M x N j k k O P = Q !.~.~.J K L M x N j k k O P = Q !.~.~.J K L M x N j k k O P = Q !.~.~.J K L M x N j k k
O P = Q !.~.~.J K L M x N j k k O P = Q ",
+" H #.,. at .~.{.].^.V %./.i k k j (.n # _._. :.<. at .,.).:.[.}.^.K |.l i j 4 % n & _._. # n % :.1.).:.).2.T 3.4.7 5., , n # # n % % % 6.,.7.T T 7.,.6.% % % n # # n , , 5.7 4.3.T 2.).:.).1.:.% n # _._.& n % 4 j i l |.K ^.}.[.:.).,. at .<.:. _._. # n (.j k k i /.%.V ^.].{.~. at .,.#.H 8.D 9.# n % 0.a.N Y /.X b.^.b.c.d. at .).2.e. # k f.f.; 5.g.j A X V }.T >.>.% n # # n % % % 6.` }.h.h.}.` 6.% % % n # # n % >.>.T }.V X A j g.5.; f.f.k # e.2.). at .d.c.b.^.b.X /.Y N a.0.% n # 9.D 8. i.....I ~.{.].^.V %./.i k k j (.n # _._. ~.j.k.l.~.{.].^.V %./.i k k j (.n # _._. j.k.k.k.~.{.].^.V %./.i k k j (.n # _._. j.k.k.k.~.{.].^.V %./.i k k j (.n # _._. j.k.k.k.~.{.].^.V %./.i k k j (.n # _._. ~.j.k.l.~.{.].^.V %./.i k
k j (.n # _._. i.....I ~.{.].^.V %./.i k k j (.n # _._. ",
+" [. at .1.m.>.n.o.o.].].p.V -.q.j j l ) = e Y r.k y s.t.!.#.u.v.T w.x.}.V ^.%.q.i : ) { P k k y # = % % T y.z.H A.B.#.C.&./.6 k k 0 = # # = % % % % D.#.#.G G #.#.D.% % % % = # # = 0 k k 6 /.&.C.#.B.A.H z.y.T % % = # y k k P { ) : i q.%.^.V }.x.w.T v.u.#.!.t.s. y k r.Y e = ) l j j q.-.V p.].].o.o.n.>.m.1. at .[. $.k E.F.{ m g.N Y A V p.b.V [.G.n.).m.).s.# # = 8 k i f.D N H.I.b.b.J.i.m.>.K.% = # # = % % % % L.n.p.h.h.p.d.L.% % % % = # # = % K.>.m.i.J.b.b.I.H.N D f.i k 8 = # # s.).m.).n.G.[.V b.p.V A Y N g.m { F.E.k $. [. at .1.m.>.n.o.o.].].p.V -.q.j j l ) = e Y r.k y [.` M.M.s.n.o.o.].].p.V -.q.j j l ) = e Y r.k y N.k.k.k.k.M.o.o.].].p.V -.q.j j l ) = e Y r.k y [.k.k.k.k.n.o.o.].].p.V -.q.j j l ) = e Y r.k y N.k.k.k.k.M.o.o.].].p.V -.q.j j l ) = e Y r.k y [.` M.M.s.n.o.o.].].p.V -.q.
j j l ) = e Y r.k y [. at .1.m.>.n.o.o.].].p.V -.q.j j l ) = e Y r.k y ",
+" O.{.J.:.#.). at .!.x.G.[.b.].].b.%.A b N (.} i k k k y P.{.Q.t.T #.>.R R.G.Q.b.].^.%.S.: c T.j k k U. # n % ! 0 V.W.X.l. at .#.:.J.].W N.Y.k 0 % n # # n % % % % F Z.j.V.V.V.V.j.Z.F % % % % n # # n % 0 k Y.N.W ].J.:.#. at .l.X.W.V.0 ! % n # U.k k j T.c : S.%.^.].b.Q.G.R.R >.#.T t.Q.{.P. y k k k i } (.N b A %.b.].].b.[.G.x.!. at .).#.:.J.{.O. y < b : g.y N `.%.V p.V b.}.o.G.j.H ).#.!. +# # n % f j i i S.|.I.V V V {.G.=.T *..+% n # # n % % % % % ++Q.p././.p.o.++% % % % % n # # n % .+*.T =.G.{.V V V I.|.S.i i j f % n # # +!.#.).H j.G.o.}.b.V p.V %.`.N y g.: b < y O.{.J.:.#.). at .!.x.G.[.b.].].b.%.A b N (.} i k k k y O.{.J.:.T G @.!.x.G.[.b.].].b.%.A b N (.} i k k k y O.{.J.I ....I !.x.G.[.b.].].b.%.A b N (.} i k k k y O.{.w.d.k.k.k. .x.G.[.b.].].b.%.A b N (.} i k k k y O.{.J.I ....I !.x.G.[.b.].].b.%.A b N (.} i k k k y O.{.J.:.T G @.!.x.G.[.b.].].b.%.
A b N (.} i k k k y O.{.J.:.#.). at .!.x.G.[.b.].].b.%.A b N (.} i k k k y ",
+"8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8. T.T.%+&+R.w.R <.t.x.G.o.b.p.I.b.b.&.W.*+k k b 8. =+= % % 0 k k k S.#+l.d.#+#+Q.c.&.-+k 0 % % = =+ =+= % % % % % h *.X.r 4.4.r X.*.h % % % % % = =+ =+= % % 0 k -+&.c.Q.#+#+d.l.#+S.k k k 0 % % = =+ 8.b k k *+W.&.b.b.I.p.b.o.G.x.t.<.R w.R.&+%+T.T. 8.7 k k j H.3.$+V ].].].].].p.o.#+x.R.l.H R U x.R. at +T.8. _.B k N S.;+C.V b.b.I.].V }.G.o.G.#+H R C.>+E =+ =+= % % 0 k i %+].^.V V V V b.G.,+j.G.5.% % = =+ =+= % % % % % % z.o.p.A A p.o.z.% % % % % % = =+ =+= % % 5.G.j.,+G.b.V V V V ^.].%+i k 0 % % = =+ =+E >+C.R H #+G.o.G.}.V ].I.b.b.V C.;+S.N k B _. 8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.M.l.k.I R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].
].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.",
+"y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8 $.4.i E.%+R.x.J.R.x.G.o.{+H.A `.]+].b.V /.k k y o ^+% % % E.k E.E.7 S.j.w.%.%+w /+K %+k 5.% % % ^+ ^+% % % % 5.(+5.%._+'.E.E.'._+%.5.(+5.% % % % ^+ ^+% % % 5.k %+K /+w %+%.w.j.S.7 E.E.k E.% % % ^+ o y k k /.V b.].]+`.A H.{+o.G.x.R.J.x.R.%+E.i 4.$. 8 k k j H.^.b.].].W `.~+!+)+X.o.#+x.&+J.R.x.x.'+O 4.y f.k j x K V V V b.W !+S.A X.x.o.x.J.x.-.B '.C ^+% % % % f.j A ].].V V V I.%.x A G.A 6 % % % ^+ ^+% % % % % 9 9 >+o.].A A ].o.>+$.9 % % % % % ^+ ^+% % % 6 A G.A x %.I.V V V ].].A j f.% % % % ^+ C '.B -.x.J.x.o.x.X.A S.!+W b.V V V K x j k f. y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8 y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8 y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8 y 4.O '+x.x.&.&.J.x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8 y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8 y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W
].].b.^.H.j k k 8 y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8 ",
+"8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U. T.h.i T.<+o.G.G.G.o.R.[+q.a.~+V ].b.L r k E.= =+ =+= % % E.k m.m.m.}+_+G.x k k : L %+8 % % % = =+ =+= % % % 4.4.x X.B |+m.m.|+B 1+x 4.4.% % % = =+ =+= % % % 8 %+L : k k x G._+}+m.m.m.k E.% % = =+ =+= E.k r L b.].V ~+a.q.[+R.o.G.G.G.o.<+T.i h.T. U.k j k I.].].].b.:+i l l *+x.o.#+#+#+o.o.'+Y j T.8. f.k B C.V ].p.b.I.%.q.Y Y.x.#+o.o.-.4.8 = =+ =+= % % % T.k Y &.].].b.b.I.M.k Y <+4.0 % % = =+ =+= % % % % 8 k [+o.].A A ].o.[+k 8 % % % % = =+ =+= % % 0 4.<+Y k M.I.b.b.].].&.Y k T.% % % = =+ =+= 8 4.-.o.o.#+x.Y.Y q.%.I.b.p.].V C.B k f. 8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U. 8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U. 8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U. 8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U. 8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U. 8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.
].].].I.k j k U. 8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U. ",
+" f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U. 4+5.N _+{+o.G.o.o.2+i < w I.b.b.V |.k k E.# # n % ! E.5+m.m.5+6+X.r 7 7 /+C.|.y - % n # # n % % f 4.x 7+F.m.m.m.m.F.7+x 4.f % % n # # n % - y |.C./+7 7 r X.6+5+m.m.5+E.! % n # # E.k k |.V b.b.I.w < i 2+o.o.G.o.{+_+N 5.4+ U.k k q.X b.].].V V 3.r r.i 3+x.#+#+#+o.2+O f. f.k j A C.V ].b.V b.8+N q.9+#+o.o.[+y 0+# # n % % T.k B |.].V b.b.V M.w Y X.a+% % n # # n % % % (+4 u Q.p.A A p.Q.u 4 (+% % % n # # n % % a+X.Y w M.V b.b.V ].|.B k T.% % n # # 0+y [+o.o.#+9+q.N 8+b.V b.].V C.A j k f. f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U. f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U. f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U. f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U. f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U. f.O 2+o.#+#+#+x.3+i r.r 3.V V
].].b.X q.k k U. f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U. ",
+" T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U. T.b N 2+o.G.G.G.X.C.L b+].].V &.B k k E. # = % % T.6 6 T.c+#+G.A /.].|.k T.% = # # = % % 5.c+7+B '.6 6 '.4.7+c+5.% % = # # = % T.k |.]./.A G.#+c+T.6 6 T.% % = # E.k k B &.V ].].b+L C.X.G.G.G.o.2+N b T. U.k k j r W b.p.p.p.p.V L N.1+x.#+#+#+o.Y.j T.T. f.k k Y w I.p.p.].].V K L {.o.o.o.Y.4.d+ # = % T.k B /.}.].p.V V V c.Q.2+4.5.= # # = % % % % % {.p.A A p.{.% % % % % = # # = 5.4.2+Q.c.V V V p.].}./.B k T.% = # d+4.Y.o.o.o.{.L K V ].].p.p.I.w Y k k f. T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U. T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U. T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U. T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U. T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U. T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.
p.b.W r j k k U. T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U. ",
+" 8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U. g+U.U.6 X.&+&+&+h+].].&.|.i+j+k+6+i k k D # n % q a a '+X.Q.[.K L -+4.h., n # # n % % F z.|.'.a a '.|.z.F % % n # # n , h.4.-+L K [.Q.X.'+a a q % n # D k k i 6+k+j+i+|.&.].].h+&+&+&+X.6 U.U.g+ U.k k k j r -.)+f+e+W.%.K ^.].{.R.&+&+R.2+'.E.E.8. f.k k k B H.M l+X X w *.V I.L ;+Q.-.E._. # n T.k B N H.X %.%.7+N.K C.m+0 @ # # n % % % % n+K A A K n+% % % % n # # @ 0 m+C.K N.7+%.%.X H.N B k T.n # _.E.-.Q.;+L I.V *.w X X l+M H.B k k k f. 8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U. 8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U. 8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U. 8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U. 8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U. 8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+
)+-.r j k k k U. 8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U. ",
+" o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D 6.j+q+M.u+r+D._+_ } | % % | t+t+t+g+ Q = .+v+v+u+V n+q+8+7 5.F.F.- Q Q = % % % w+*.U U *.w+% % % = Q Q - F.F.5.7 8+q+n+V u+v+v+.+= Q g+t+t+t+| % % | } _ _+D.r+u+M.q+j+6. D 7 b b t+f | ^ % s } a.a./.s+r+q+q+p+o+ y : : '.T.F.5 m 1 ( _ a.D v+K.B.x+y. Q F.B B a 2 d 0.0.a.8 B.F % = Q Q = % % % h S.~+~+S.h % % % = Q Q = % F B.8 a.0.0.d 2 a B B F.Q y.x+B.K.v+D a._ ( 1 m 5 F.T.'.: : y o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D o+p+q+q+r+s+/.a.a.} s %
^ | f t+b b 7 D o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D ",
+" & n % % % 5 | ~ s % % % n & 9.9.9.9. # C % 0+% ^ ^ 5 s % % % n & & n % v j+j+y+> > > ; % n & & n % % ! e v v.e ! % % n & & n % ; > > > y+j+j+v % n & & n % % % s 5 ^ ^ % 0+% C # 9.9.9.9.& n % % % s ~ | 5 % % % n & g+g+g+F % % % { ; > ~ ; % % n & & (+D > % { % ) ' ) % % n & & n % % F 0 }+}+0 F % % n & & n % % ) ' ) % { % > D (+& & n % % ; ~ > ; { % % % F g+g+g+ & n % % % 5 | ~ s % % % n & 9.9.9.9. & n % % % 5 | ~ s % % % n & 9.9.9.9. & n % % % 5 | ~ s % % % n & 9.9.9.9. & n % % % 5 | ~ s % % % n & 9.9.9.9. & n % % % 5 | ~ s % % % n & 9.9.9.9. & n % % % 5 | ~ s % %
% n & 9.9.9.9. & n % % % 5 | ~ s % % % n & 9.9.9.9. ",
+" / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % ] ] % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % % = / / = % % % % % % % %
= / / = % % % % % % % % = / ",
+" & $ % % % % % % $ & & n % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % n & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $ & & $ % % % % % % $
& & $ % % % % % % $ & ",
+" * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = * * = % % % % = *
* = % % % % = * ",
+" # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ # # $ % % $ #
# $ % % $ # ",
+" + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ + + @ @ +
+ @ @ + ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . "};
Modified: trunk/spectrum/spec_panel.c
===================================================================
--- trunk/spectrum/spec_panel.c 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spec_panel.c 2012-05-16 09:59:11 UTC (rev 18286)
@@ -49,19 +49,26 @@
GtkWidget *bwtable;
GtkWidget *bwbutton;
GtkWidget *bwmodebutton;
+ GtkWidget *plot_label_al;
} p;
int plot_scale=0;
int plot_mode=0;
int plot_link=0;
int plot_hold=0;
+int plot_lock_y=0;
int plot_depth=90;
int plot_noise=0;
int plot_last_update=0;
int plot_bw=0;
int plot_bwmode=0;
+int plot_bold=0;
int *active;
+static void override_base(GtkWidget *w, int active){
+ gtk_widget_modify_base (w, GTK_STATE_NORMAL, &w->style->bg[active?GTK_STATE_ACTIVE:GTK_STATE_NORMAL]);
+}
+
static void replot(struct panel *p){
int i,lactive[total_ch];
for(i=0;i<total_ch;i++)
@@ -396,6 +403,7 @@
replot(p);
plot_setting(PLOT(p->plot),plot_scale,plot_mode,plot_link,plot_depth,plot_noise);
chlabels(widget,p);
+ gtk_alignment_set_padding(GTK_ALIGNMENT(p->plot_label_al),0,0,0,plot_get_right_pad(PLOT(p->plot)));
}
static void runchange(GtkWidget *widget,struct panel *p){
@@ -415,10 +423,23 @@
static void holdchange(GtkWidget *widget,struct panel *p){
plot_hold=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ override_base(widget,plot_hold);
replot(p);
plot_draw(PLOT(p->plot));
}
+static void lockchange(GtkWidget *widget,struct panel *p){
+ plot_lock_y=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ override_base(widget,plot_lock_y);
+ plot_set_autoscale(PLOT(p->plot),!plot_lock_y);
+}
+
+static void boldchange(GtkWidget *widget,struct panel *p){
+ plot_bold=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ override_base(widget,plot_bold);
+ plot_set_bold(PLOT(p->plot),plot_bold);
+}
+
static void loopchange(GtkWidget *widget,struct panel *p){
acc_loop=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
}
@@ -471,36 +492,114 @@
}
extern char *version;
-void panel_create(struct panel *panel, int bold){
+void panel_create(struct panel *panel){
int i;
+ GdkWindow *root=gdk_get_default_root_window();
GtkWidget *topbox=gtk_hbox_new(0,0);
- GtkWidget *toplabel=gtk_label_new (NULL);
GtkWidget *rightframe=gtk_frame_new (NULL);
- GtkWidget *leftlabel=gtk_label_new (NULL);
- GdkWindow *root=gdk_get_default_root_window();
GtkWidget *righttopbox=gtk_vbox_new(0,0);
GtkWidget *rightframebox=gtk_event_box_new();
GtkWidget *rightbox=gtk_vbox_new(0,0);
- GtkWidget *lefttable=gtk_table_new(3,2,0);
+ GtkWidget *lefttable=gtk_table_new(4,2,0);
+ GtkWidget *plot_control_al;
+ GtkWidget *wbold;
- gtk_container_set_border_width (GTK_CONTAINER (righttopbox), 6);
- gtk_container_set_border_width (GTK_CONTAINER (rightbox), 6);
- gtk_widget_set_name(rightframebox,"controlpanel");
- gtk_widget_set_name(topbox,"panel");
+ active = calloc(total_ch,sizeof(*active));
panel->toplevel=gtk_window_new (GTK_WINDOW_TOPLEVEL);
panel->group = gtk_accel_group_new ();
gtk_window_add_accel_group (GTK_WINDOW(panel->toplevel), panel->group);
-
gtk_window_set_title(GTK_WINDOW(panel->toplevel),(const gchar *)"Spectrum Analyzer");
gtk_window_set_default_size(GTK_WINDOW(panel->toplevel),1024,400);
//gtk_widget_set_size_request(GTK_WIDGET(panel->toplevel),1024,400);
+ gtk_container_add (GTK_CONTAINER (panel->toplevel), topbox);
+ g_signal_connect (G_OBJECT (panel->toplevel), "delete_event",
+ G_CALLBACK (shutdown), NULL);
+ gtk_widget_set_name(topbox,"panel");
+ /* underlying boxes/frames */
+ gtk_box_pack_start(GTK_BOX(topbox),lefttable,1,1,0);
+ gtk_box_pack_start(GTK_BOX(topbox),righttopbox,0,0,0);
+
+ panel->plot=plot_new(blocksize/2+1,inputs,channels,rate);
+
+ /* plot control checkboxes */
+ {
+ GtkWidget *al=plot_control_al=gtk_alignment_new(0,0,0,0);
+ GtkWidget *box=gtk_hbox_new(0,6);
+ GtkWidget *lock_range=gtk_check_button_new_with_mnemonic("lock _Y range");
+ GtkWidget *hold_display=gtk_check_button_new_with_mnemonic("_hold display");
+ wbold=gtk_check_button_new_with_mnemonic("_bold");
+ gtk_table_attach(GTK_TABLE (lefttable), al,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_container_add(GTK_CONTAINER (al),box);
+ gtk_box_pack_start(GTK_BOX(box),lock_range,0,0,0);
+ gtk_box_pack_start(GTK_BOX(box),hold_display,0,0,0);
+ gtk_box_pack_start(GTK_BOX(box),wbold,0,0,0);
+
+ gtk_widget_set_name(lock_range,"top-control");
+ gtk_widget_set_name(hold_display,"top-control");
+ gtk_widget_set_name(wbold,"top-control");
+ g_signal_connect (G_OBJECT (hold_display), "clicked", G_CALLBACK (holdchange), panel);
+ gtk_widget_add_accelerator (hold_display, "activate", panel->group, GDK_h, 0, 0);
+ g_signal_connect (G_OBJECT (lock_range), "clicked", G_CALLBACK (lockchange), panel);
+ gtk_widget_add_accelerator (lock_range, "activate", panel->group, GDK_y, 0, 0);
+ gtk_widget_add_accelerator (lock_range, "activate", panel->group, GDK_Y, 0, 0);
+ g_signal_connect (G_OBJECT (wbold), "clicked", G_CALLBACK (boldchange), panel);
+ gtk_widget_add_accelerator (wbold, "activate", panel->group, GDK_b, 0, 0);
+
+ }
+
+ /* plot informational labels */
+ {
+ char buf[80];
+ GtkWidget *al=panel->plot_label_al=gtk_alignment_new(1,.5,0,0);
+ GtkWidget *box=gtk_hbox_new(0,2);
+ GtkWidget *text1=gtk_label_new("window:");
+ GtkWidget *text2=gtk_label_new("sin^4 ");
+ GtkWidget *text3=gtk_label_new("points:");
+
+ snprintf(buf,80,"%d",blocksize);
+
+ GtkWidget *text4=gtk_label_new(buf);
+ gtk_table_attach(GTK_TABLE (lefttable), al,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_container_add(GTK_CONTAINER (al),box);
+
+ gtk_box_pack_end(GTK_BOX(box),text4,0,0,0);
+ gtk_box_pack_end(GTK_BOX(box),text3,0,0,0);
+ gtk_box_pack_end(GTK_BOX(box),text2,0,0,0);
+ gtk_box_pack_end(GTK_BOX(box),text1,0,0,0);
+
+ gtk_widget_set_name(text1,"top-label");
+ gtk_widget_set_name(text2,"top-readout");
+ gtk_widget_set_name(text3,"top-label");
+ gtk_widget_set_name(text4,"top-readout");
+
+ }
+
+ /* add the spectrum plot box */
+ gtk_table_attach_defaults (GTK_TABLE (lefttable), panel->plot,0,1,2,3);
+ //gtk_table_set_row_spacing (GTK_TABLE (lefttable), 0, 4);
+ gtk_table_set_row_spacing (GTK_TABLE (lefttable), 2, 4);
+ gtk_table_set_col_spacing (GTK_TABLE (lefttable), 0, 2);
+
+ /* right control frame */
+ gtk_container_set_border_width (GTK_CONTAINER (righttopbox), 6);
+ gtk_container_set_border_width (GTK_CONTAINER (rightbox), 6);
+ gtk_frame_set_shadow_type(GTK_FRAME(rightframe),GTK_SHADOW_ETCHED_IN);
+ gtk_widget_set_name(rightframebox,"controlpanel");
+ gtk_box_pack_end(GTK_BOX (righttopbox),rightframebox,1,1,0);
+ gtk_container_add (GTK_CONTAINER (rightframebox),rightframe);
+ gtk_container_add (GTK_CONTAINER (rightframe), rightbox);
+
/* the Fucking Fish */
{
+ GtkWidget *toptable = gtk_table_new(2,1,0);
+ GtkWidget *fishbox=gtk_alignment_new(.5,.5,0,0);
+ GtkWidget *sepbox=gtk_alignment_new(.5,.85,.7,0);
+ GtkWidget *topsep=gtk_hseparator_new();
GdkPixmap *tb;
- GdkPixmap *tp=gdk_pixmap_create_from_xpm_d(root,&tb,NULL,fisharray);
+ GdkPixmap *tp=gdk_pixmap_create_from_xpm_d(root,&tb,NULL,fisharray_xpm);
GdkGC *cgc=gdk_gc_new(tp);
GdkGC *bgc=gdk_gc_new(tb);
int w, h;
@@ -519,49 +618,16 @@
g_object_unref(bgc);
g_object_unref(tp);
g_object_unref(tb);
- }
- panel->twirlimage=gtk_image_new_from_pixmap(panel->ff[0],panel->fb[0]);
+ panel->twirlimage=gtk_image_new_from_pixmap(panel->ff[0],panel->fb[0]);
- active = calloc(total_ch,sizeof(*active));
-
- gtk_container_add (GTK_CONTAINER (panel->toplevel), topbox);
- gtk_frame_set_shadow_type(GTK_FRAME(rightframe),GTK_SHADOW_ETCHED_IN);
-
- g_signal_connect (G_OBJECT (panel->toplevel), "delete_event",
- G_CALLBACK (shutdown), NULL);
-
-
- /* underlying boxes/frames */
- gtk_box_pack_start(GTK_BOX(topbox),lefttable,1,1,0);
- gtk_box_pack_start(GTK_BOX(topbox),righttopbox,0,0,0);
-
- gtk_box_pack_end(GTK_BOX (righttopbox),rightframebox,1,1,0);
- gtk_container_add (GTK_CONTAINER (rightframebox),rightframe);
- gtk_container_add (GTK_CONTAINER (rightframe), rightbox);
-
- /* add the spectrum plot box */
- panel->plot=plot_new(blocksize/2+1,inputs,channels,rate,bold);
- gtk_table_attach_defaults (GTK_TABLE (lefttable), panel->plot,0,1,1,2);
- gtk_table_set_row_spacing (GTK_TABLE (lefttable), 0, 6);
- gtk_table_set_row_spacing (GTK_TABLE (lefttable), 1, 4);
- gtk_table_set_col_spacing (GTK_TABLE (lefttable), 0, 2);
-
- /* fish */
- {
- GtkWidget *toptable = gtk_table_new(1,1,0);
- GtkWidget *fishbox=gtk_alignment_new(.5,.5,0,0);
- GtkWidget *sepbox=gtk_alignment_new(.5,.85,.7,0);
- GtkWidget *topsep=gtk_hseparator_new();
-
-
gtk_container_set_border_width (GTK_CONTAINER (toptable), 1);
gtk_box_pack_start(GTK_BOX(righttopbox),toptable,0,0,0);
gtk_container_add (GTK_CONTAINER (sepbox), topsep);
gtk_container_add(GTK_CONTAINER(fishbox),panel->twirlimage);
- gtk_table_attach_defaults (GTK_TABLE (toptable), fishbox,0,1,0,1);
- gtk_table_attach_defaults (GTK_TABLE (toptable), sepbox,0,1,0,1);
-
+ gtk_table_attach_defaults (GTK_TABLE (toptable), fishbox,0,1,1,2);
+ gtk_table_attach_defaults (GTK_TABLE (toptable), sepbox,0,1,1,2);
+ gtk_table_set_row_spacing (GTK_TABLE (toptable), 0, 6);
}
/* rate */
@@ -708,33 +774,17 @@
panel->run=button;
}
- /* hold */
/* loop */
+ /* rewind */
{
GtkWidget *box=gtk_hbox_new(1,1);
- GtkWidget *button=gtk_toggle_button_new_with_mnemonic("_hold");
- gtk_widget_add_accelerator (button, "activate", panel->group, GDK_h, 0, 0);
- g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (holdchange), panel);
- gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
-
- button=gtk_toggle_button_new_with_mnemonic("_loop");
+ GtkWidget *button=gtk_toggle_button_new_with_mnemonic("_loop");
gtk_widget_add_accelerator (button, "activate", panel->group, GDK_l, 0, 0);
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (loopchange), panel);
gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
gtk_widget_set_sensitive(button,global_seekable);
- gtk_box_pack_start(GTK_BOX(bbox),box,0,0,0);
- }
-
- /* clear */
- /* rewind */
- {
- GtkWidget *box=gtk_hbox_new(1,1);
- GtkWidget *button=gtk_button_new_with_mnemonic("_clear");
- gtk_widget_add_accelerator (button, "activate", panel->group, GDK_c, 0, 0);
- g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (clearchange), panel);
- gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
-
+
button=gtk_button_new_with_mnemonic("re_wind");
gtk_widget_add_accelerator (button, "activate", panel->group, GDK_w, 0, 0);
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (rewindchange), panel);
@@ -744,12 +794,22 @@
gtk_box_pack_start(GTK_BOX(bbox),box,0,0,0);
}
+ /* clear */
/* dump */
{
- GtkWidget *button=gtk_button_new_with_mnemonic("_dump data");
+ GtkWidget *box=gtk_hbox_new(1,1);
+ GtkWidget *button=gtk_button_new_with_mnemonic("_clear data");
+ gtk_widget_add_accelerator (button, "activate", panel->group, GDK_c, 0, 0);
+ g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (clearchange), panel);
+ gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
+
+
+ button=gtk_button_new_with_mnemonic("_dump data");
gtk_widget_add_accelerator (button, "activate", panel->group, GDK_d, 0, 0);
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (dump), panel);
- gtk_box_pack_start(GTK_BOX(bbox),button,0,0,0);
+ gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
+
+ gtk_box_pack_start(GTK_BOX(bbox),box,0,0,0);
}
/* noise floor */
@@ -765,8 +825,13 @@
gtk_box_pack_end(GTK_BOX(rightbox),bbox,0,0,0);
gtk_widget_show_all(panel->toplevel);
gtk_combo_box_set_active(GTK_COMBO_BOX(panel->bwbutton),0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wbold),plot_bold);
+
gtk_key_snooper_install(watch_keyboard,panel);
+ gtk_alignment_set_padding(GTK_ALIGNMENT(plot_control_al),0,0,plot_get_left_pad(PLOT(panel->plot)),0);
+ gtk_alignment_set_padding(GTK_ALIGNMENT(panel->plot_label_al),0,0,0,plot_get_right_pad(PLOT(panel->plot)));
+
}
static gboolean async_event_handle(GIOChannel *channel,
@@ -811,7 +876,7 @@
return 1;
}
-void panel_go(int argc,char *argv[],int bold){
+void panel_go(int argc,char *argv[]){
char *homedir=getenv("HOME");
int found=0;
memset(&p,0,sizeof(p));
@@ -866,7 +931,7 @@
gtk_rc_add_default_file("spectrum-gtkrc");
gtk_init (&argc, &argv);
- panel_create(&p, bold);
+ panel_create(&p);
animate_fish(&p);
/* set up watching the event pipe */
Modified: trunk/spectrum/spec_plot.c
===================================================================
--- trunk/spectrum/spec_plot.c 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spec_plot.c 2012-05-16 09:59:11 UTC (rev 18286)
@@ -78,7 +78,8 @@
static void compute_metadata(GtkWidget *widget){
Plot *p=PLOT(widget);
- int width=widget->allocation.width-p->padx;
+ int phase = (p->link == LINK_PHASE);
+ int width=widget->allocation.width-p->padx-(phase?p->phax:0);
int rate=p->maxrate;
int nyq=p->maxrate/2.;
int i;
@@ -221,6 +222,8 @@
#endif
int phase = (p->link == LINK_PHASE);
int padx = p->padx;
+ int phax = phase ? p->phax : 0;
+ int pwidth = width - padx - phax;
if(phase){
/* are any of the phase channels actually active? */
@@ -263,9 +266,15 @@
rgb_fg.blue = (rgb_fg.blue*3 + rgb_bg.blue*2)/5;
gdk_gc_set_rgb_fg_color(p->graygc,&rgb_fg);
}
+ if(!p->phasegc){
+ GdkColor rgb={0,0x8000,0x0000,0x0000};
+ p->phasegc=gdk_gc_new(p->backing);
+ gdk_gc_set_rgb_fg_color(p->phasegc,&rgb);
+ gdk_gc_set_line_attributes(p->phasegc,1,GDK_LINE_SOLID,GDK_CAP_PROJECTING,GDK_JOIN_MITER);
+ }
{
- const GdkRectangle clip = {p->padx,0,width-p->padx,height-p->pady};
+ const GdkRectangle clip = {p->padx,0,pwidth,height-p->pady};
GdkGCValues values;
//gdk_gc_get_values(p->drawgc,&values);
values.line_width=1;
@@ -278,9 +287,11 @@
GdkGC *gc=parent->style->bg_gc[0];
gdk_draw_rectangle(p->backing,gc,1,0,0,padx,height);
gdk_draw_rectangle(p->backing,gc,1,0,height-p->pady,width,p->pady);
+ if(phase)
+ gdk_draw_rectangle(p->backing,gc,1,width-phax,0,phax,height);
gc=parent->style->white_gc;
- gdk_draw_rectangle(p->backing,gc,1,padx,0,width-padx,height-p->pady);
+ gdk_draw_rectangle(p->backing,gc,1,padx,0,pwidth,height-p->pady);
}
/* draw the noise floor if active */
@@ -289,7 +300,7 @@
GdkColor rgb = {0,0xd000,0xd000,0xd000};
gdk_gc_set_rgb_fg_color(p->drawgc,&rgb);
- for(i=0;i<width-padx;i++){
+ for(i=0;i<pwidth;i++){
float val=p->floor[i];
int y;
@@ -333,10 +344,11 @@
int px,py;
pango_layout_get_pixel_size(proper[i],&px,&py);
- gdk_draw_layout (p->backing,
- widget->style->black_gc,
- p->xlgrid[i]-(px/2), height-py+2,
- proper[i]);
+ if(p->xlgrid[i]+(px/2)<width)
+ gdk_draw_layout (p->backing,
+ widget->style->black_gc,
+ p->xlgrid[i]-(px/2), height-py+2,
+ proper[i]);
}
}
@@ -355,7 +367,7 @@
compute_imp_scale(widget);
for(i=0;i<p->ytics;i++)
- gdk_draw_line(p->backing,p->drawgc,padx,p->ytic[i],width,p->ytic[i]);
+ gdk_draw_line(p->backing,p->drawgc,padx,p->ytic[i],pwidth,p->ytic[i]);
/* dark grid */
rgb.red=0x0000;
@@ -373,7 +385,7 @@
padx-px-2, p->ygrid[i]-py/2,
p->imp_layout[i]);
- gdk_draw_line(p->backing,p->drawgc,padx,p->ygrid[i],width,p->ygrid[i]);
+ gdk_draw_line(p->backing,p->drawgc,padx,p->ygrid[i],pwidth,p->ygrid[i]);
}
}else{
@@ -460,9 +472,9 @@
if(ymid>=0){
if(yval % majordel == 0){
}else if(yval % minordel == 0){
- gdk_draw_line(p->backing,p->drawgc,padx,ymid,width,ymid);
+ gdk_draw_line(p->backing,p->drawgc,padx,ymid,width-phax,ymid);
}else{
- gdk_draw_line(p->backing,p->dashes,padx,ymid,width,ymid);
+ gdk_draw_line(p->backing,p->dashes,padx,ymid,width-phax,ymid);
}
}
yval-=subminordel;
@@ -551,7 +563,7 @@
p->db_layout[yval/1000+200]);
}
}
- gdk_draw_line(p->backing,p->drawgc,padx,ymid,width,ymid);
+ gdk_draw_line(p->backing,p->drawgc,padx,ymid,width-phax,ymid);
}
yval-=majordel;
}
@@ -572,68 +584,7 @@
gdk_draw_line(p->backing,p->drawgc,p->xgrid[i],0,p->xgrid[i],height-p->pady);
}
- /* phase? draw in phase and tics on right axis */
- if(phase){
- GdkColor rgb={0,0xd000,0x0000,0x0000};
- float depth = p->disp_pmax-p->disp_pmin;
- int label=ceil(p->disp_pmax/10+18),i;
- float del=(height-p->pady-1)/depth,step;
- float off=p->disp_pmax-ceil(p->disp_pmax*.1)*10;
- step=2;
- if(del>8)step=1;
- gdk_gc_set_rgb_fg_color(p->drawgc,&rgb);
- for(i=0;i<37;i++){
- if(((label-i)&1)==0 || step==1){
- int ymid=rint(del * (i*10+off));
- int px,py;
-
- if(label-i>=0 && label-i<37 && ymid>=0 && ymid<height-p->pady){
- pango_layout_get_pixel_size(p->phase_layout[label-i],&px,&py);
-
- gdk_draw_layout (p->backing,p->drawgc,
- width-p->phax, ymid-py/2,
- p->phase_layout[label-i]);
- }
- }
- }
-
- if(del>10){
- for(i=0;;i++){
- int ymid=rint(del * (i+off));
- if(ymid>=height-p->pady)break;
- if(ymid>=0)
- gdk_draw_line(p->backing,p->drawgc,width-p->phax-(i%5==0?15:10),ymid,width-p->phax-(i%5==0?5:7),ymid);
- }
- }else if(del>5){
- for(i=0;;i++){
- int ymid=rint(del * (i*2+off));
- if(ymid>=height-p->pady)break;
- if(ymid>=0)
- gdk_draw_line(p->backing,p->drawgc,width-p->phax-12,ymid,width-p->phax-7,ymid);
- }
- } else if(del>2){
- for(i=0;;i++){
- int ymid=rint(del * (i*5+off));
- if(ymid>=height-p->pady)break;
- if(ymid>=0)
- gdk_draw_line(p->backing,p->drawgc,width-p->phax-15,ymid,width-p->phax-5,ymid);
- }
- }
-
- for(i=0;;i++){
- int ymid=rint(del * (i*10+off));
- if(ymid>=height-p->pady)break;
- if(ymid>=0){
- gdk_draw_line(p->backing,p->drawgc,width-p->phax-5,ymid-1,width-p->phax-2,ymid-1);
- gdk_draw_line(p->backing,p->drawgc,width-p->phax-25,ymid,width-p->phax-2,ymid);
- gdk_draw_line(p->backing,p->drawgc,width-p->phax-5,ymid+1,width-p->phax-2,ymid+1);
- }
- }
-
- }
-
-
gdk_gc_set_line_attributes(p->drawgc,p->bold+1,GDK_LINE_SOLID,GDK_CAP_PROJECTING,
GDK_JOIN_MITER);
@@ -651,7 +602,7 @@
rgb = chcolor(ch);
gdk_gc_set_rgb_fg_color(p->drawgc,&rgb);
- for(i=0;i<width-padx;i++){
+ for(i=0;i<pwidth;i++){
float valmin=p->ydata[ch][i*2];
float valmax=p->ydata[ch][i*2+1];
float ymin, ymax;
@@ -692,6 +643,89 @@
cho+=p->ch[gi];
}
}
+
+ /* phase? draw in phase and tics on right axis */
+ if(phase){
+ float depth = p->disp_pmax-p->disp_pmin;
+ int label=ceil(p->disp_pmax/10+18),i;
+ float del=(height-p->pady-1)/depth,step;
+ float off=p->disp_pmax-ceil(p->disp_pmax*.1)*10;
+ step=2;
+ if(del>8)step=1;
+
+ for(i=0;i<38;i++){
+ if(((label-i)&1)==0 || step==1){
+ int ymid=rint(del * (i*10+off));
+ int px,py;
+
+ if(label-i>=0 && label-i<37 && ymid>=p->pady/2 && ymid<height-p->pady/2){
+ pango_layout_get_pixel_size(p->phase_layout[label-i],&px,&py);
+ gdk_draw_layout (p->backing,p->phasegc,
+ width-p->phax+2, ymid-py/2,
+ p->phase_layout[label-i]);
+ }
+ }
+ }
+
+ if(del>10){
+ for(i=0;;i++){
+ int ymid=rint(del * (i+off));
+ int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+ if(ymid>=height-p->pady)break;
+ if(ymid>=0 && pv>=-180 && pv<=180)
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-(i%5==0?15:10),ymid,width-p->phax-(i%5==0?5:7),ymid);
+ }
+ }else if(del>5){
+ for(i=0;;i++){
+ int ymid=rint(del * (i*2+off));
+ int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+ if(ymid>=height-p->pady)break;
+ if(ymid>=0 && pv>=-180 && pv<=180)
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-12,ymid,width-p->phax-7,ymid);
+ }
+ } else if(del>2){
+ for(i=0;;i++){
+ int ymid=rint(del * (i*5+off));
+ int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+ if(ymid>=height-p->pady)break;
+ if(ymid>=0 && pv>=-180 && pv<=180)
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-15,ymid,width-p->phax-5,ymid);
+ }
+ }
+
+ if(del>=2){
+ for(i=0;;i++){
+ int ymid=rint(del * (i*10+off));
+ int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+ if(ymid>=height-p->pady)break;
+ if(ymid>=0 && pv>=-180 && pv<=180){
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-5,ymid-1,width-p->phax-1,ymid-1);
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-25,ymid,width-p->phax-1,ymid);
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-5,ymid+1,width-p->phax-1,ymid+1);
+ }
+ }
+ }else{
+
+ for(i=0;;i++){
+ int ymid=rint(del * (i*10+off));
+ int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+ if(ymid>=height-p->pady)break;
+ if(ymid>=0 && pv>=-180 && pv<=180)
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-15,ymid,width-p->phax-5,ymid);
+ }
+
+ for(i=0;;i++){
+ int ymid=rint(del * (i*10+off));
+ int pv = rint((p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin))/10);
+ if(ymid>=height-p->pady)break;
+ if(ymid>=0 && pv>=-18 && pv<=18 && (pv&1)==0){
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-5,ymid-1,width-p->phax-1,ymid-1);
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-25,ymid,width-p->phax-1,ymid);
+ gdk_draw_line(p->backing,p->phasegc,width-p->phax-5,ymid+1,width-p->phax-1,ymid+1);
+ }
+ }
+ }
+ }
}
static void draw_and_expose(GtkWidget *widget){
@@ -814,7 +848,7 @@
if(requisition->height<axisy+pady)requisition->height=axisy+pady;
p->padx=padx;
p->pady=pady;
- p->phax=phax;
+ p->phax=phax+2;
}
static gboolean configure(GtkWidget *widget, GdkEventConfigure *event){
@@ -876,7 +910,7 @@
return m_type;
}
-GtkWidget* plot_new (int size, int groups, int *channels, int *rate, int bold){
+GtkWidget* plot_new (int size, int groups, int *channels, int *rate){
GtkWidget *ret= GTK_WIDGET (g_object_new (plot_get_type (), NULL));
Plot *p=PLOT(ret);
int g,i;
@@ -893,7 +927,6 @@
p->ch=channels;
p->rate=rate;
p->maxrate=maxrate;
- p->bold=bold;
if(maxrate > 100000){
p->lin_major = 10000.;
@@ -940,13 +973,13 @@
"-90\xC2\xB0","-80\xC2\xB0","-70\xC2\xB0",
"-60\xC2\xB0","-50\xC2\xB0","-40\xC2\xB0",
"-30\xC2\xB0","-20\xC2\xB0","-10\xC2\xB0",
- "-0\xC2\xB0","+10\xC2\xB0","+20\xC2\xB0",
- "+30\xC2\xB0","+40\xC2\xB0","+50\xC2\xB0",
- "+60\xC2\xB0","+70\xC2\xB0","+80\xC2\xB0",
- "+90\xC2\xB0","+100\xC2\xB0","+110\xC2\xB0",
- "+120\xC2\xB0","+130\xC2\xB0","+140\xC2\xB0",
- "+150\xC2\xB0","+160\xC2\xB0","+170\xC2\xB0",
- "+180\xC2\xB0"};
+ "0\xC2\xB0","10\xC2\xB0","20\xC2\xB0",
+ "30\xC2\xB0","40\xC2\xB0","50\xC2\xB0",
+ "60\xC2\xB0","70\xC2\xB0","80\xC2\xB0",
+ "90\xC2\xB0","100\xC2\xB0","110\xC2\xB0",
+ "120\xC2\xB0","130\xC2\xB0","140\xC2\xB0",
+ "150\xC2\xB0","160\xC2\xB0","170\xC2\xB0",
+ "180\xC2\xB0"};
p->phase_layout=calloc(38,sizeof(*p->phase_layout));
for(i=0;i<37;i++)
p->phase_layout[i]=gtk_widget_create_pango_layout(ret,labels[i]);
@@ -1003,13 +1036,16 @@
p->ch_active=calloc(ch,sizeof(*p->ch_active));
p->ch_process=calloc(ch,sizeof(*p->ch_process));
+ p->autoscale=1;
+
plot_clear(p);
return ret;
}
void plot_refresh (Plot *p, int *process){
float ymax,pmax,pmin;
- int width=GTK_WIDGET(p)->allocation.width-p->padx;
+ int phase = (p->link == LINK_PHASE);
+ int width=GTK_WIDGET(p)->allocation.width-p->padx-(phase ? p->phax : 0);
int height=GTK_WIDGET(p)->allocation.height-p->pady;
float **data;
@@ -1027,6 +1063,8 @@
p->ydata=data;
+ if(!p->autoscale)return;
+
/* graph limit updates are conditional depending on mode/link */
pmax+=5;
pmin-=5;
@@ -1102,6 +1140,8 @@
if(ymax>p->ymax_limit)ymax=p->ymax_limit;
if(pmax>180)pmax=180;
if(pmin<-180)pmin=-180;
+ pmax+=10;
+ pmin-=10;
if(p->mode == 0){
if(ymax>p->ymax)p->ymax=ymax;
@@ -1146,9 +1186,9 @@
pzero = (height-1)/(p->disp_pmax-p->disp_pmin)*p->disp_pmax;
/* That worked, but might have run p->max overrange */
- if(p->disp_pmax>180.){
+ if(p->disp_pmax>190.){
/* reconcile by allowing mag to overrange */
- p->disp_pmax = 180.;
+ p->disp_pmax = 190.;
pzero = (height-1)/(p->disp_pmax-p->disp_pmin)*p->disp_pmax;
p->disp_ymax = p->disp_depth*pzero/(height-1);
}
@@ -1211,3 +1251,23 @@
draw_and_expose(widget);
}
+void plot_set_autoscale(Plot *p, int a){
+ GtkWidget *widget=GTK_WIDGET(p);
+ p->autoscale=a;
+ plot_refresh(p,NULL);
+ draw_and_expose(widget);
+}
+
+void plot_set_bold(Plot *p, int b){
+ GtkWidget *widget=GTK_WIDGET(p);
+ p->bold=b;
+ draw_and_expose(widget);
+}
+
+int plot_get_left_pad (Plot *m){
+ return m->padx;
+}
+
+int plot_get_right_pad (Plot *m){
+ return (m->link==LINK_PHASE ? m->phax : 0);
+}
Modified: trunk/spectrum/spec_plot.h
===================================================================
--- trunk/spectrum/spec_plot.h 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spec_plot.h 2012-05-16 09:59:11 UTC (rev 18286)
@@ -48,6 +48,7 @@
GdkGC *drawgc;
GdkGC *dashes;
GdkGC *graygc;
+ GdkGC *phasegc;
PangoLayout **lin_layout;
PangoLayout **log_layout;
@@ -112,6 +113,7 @@
int phtimer;
int bold;
+ int autoscale;
};
struct _PlotClass{
@@ -121,7 +123,7 @@
};
GType plot_get_type (void);
-GtkWidget* plot_new (int n, int inputs, int *channels, int *rate, int bold);
+GtkWidget* plot_new (int n, int inputs, int *channels, int *rate);
void plot_refresh (Plot *m, int *process);
void plot_setting (Plot *m, int scale, int mode, int link, int depth, int noise);
void plot_draw (Plot *m);
@@ -129,7 +131,12 @@
int plot_width (Plot *m);
float** plot_get (Plot *m);
void plot_set_active (Plot *m, int *, int *);
+void plot_set_autoscale (Plot *m, int);
+void plot_set_bold (Plot *m, int);
+int plot_get_left_pad (Plot *m);
+int plot_get_right_pad (Plot *m);
+
GdkColor chcolor(int ch);
G_END_DECLS
Modified: trunk/spectrum/spectrum-gtkrc
===================================================================
--- trunk/spectrum/spectrum-gtkrc 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spectrum-gtkrc 2012-05-16 09:59:11 UTC (rev 18286)
@@ -7,11 +7,11 @@
GtkButton::focus-line-width = 1
GtkButton::interior-focus = 0
- bg[NORMAL]="#a8b0c0"
- bg[ACTIVE]="#b0d0ff"
- bg[PRELIGHT]="#d0e0f0"
- bg[SELECTED]="#d0e0f0"
- bg[INSENSITIVE]="#a8b0c0"
+ bg[NORMAL]="#b0c0d8"
+ bg[ACTIVE]="#c0e0ff"
+ bg[PRELIGHT]="#d0e6ff"
+ bg[SELECTED]="#d0e6ff"
+ bg[INSENSITIVE]="#b0c0d8"
fg[NORMAL]="#000000"
fg[ACTIVE]="#000000"
@@ -55,10 +55,35 @@
}
-style "panel-text" {
- font_name = "sans bold 7"
+style "top-control" {
+ font_name = "sans 8"
+
+ base[NORMAL]="#b0c0d8"
+ base[ACTIVE]="#c0e0ff"
+ bg[NORMAL]="#b0c0d8"
+ bg[ACTIVE]="#c0e0ff"
+ base[PRELIGHT]="#d0e6ff"
+ base[SELECTED]="#d0e6ff"
+ base[INSENSITIVE]="#b0c0d8"
+
+ text[NORMAL]="#000000"
}
+style "top-label" {
+ font_name = "sans 8"
+ fg[NORMAL]="#405080"
+ fg[PRELIGHT]="#405080"
+ fg[ACTIVE]="#405080"
+ fg[SELECTED]="#405080"
+ fg[INSENSITIVE]="#405080"
+}
+
+style "top-readout" {
+ font_name = "sans 8"
+}
+
+
+
style "scale-text" {
font_name = "sans 7"
}
@@ -69,9 +94,11 @@
class "*" style "panel"
-widget "*.GtkLabel" style "panel-text"
+widget "*.top-control*" style "top-control"
+widget "*.top-label*" style "top-label"
+widget "*.top-readout*" style "top-readout"
+
widget "*.Plot" style "scale-text"
-
widget "*.GtkEntry" style "readout"
class "GtkMenu" style "button-poppy"
widget_class "*Menu*" style "button-poppy"
Modified: trunk/spectrum/spectrum.c
===================================================================
--- trunk/spectrum/spectrum.c 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spectrum.c 2012-05-16 09:59:11 UTC (rev 18286)
@@ -35,7 +35,7 @@
char *inputname[MAX_FILES];
int inputs=0;
int blocksize = 131072;
-int bold=0;
+extern int plot_bold;
void handler(int sig){
signal(sig,SIG_IGN);
@@ -133,7 +133,7 @@
inputname[inputs++]=strdup(optarg);
break;
case 'T':
- bold = 1;
+ plot_bold = 1;
break;
case 'b':
/* force bit width */
@@ -296,7 +296,7 @@
}
/* go */
- panel_go(argc,argv,bold);
+ panel_go(argc,argv);
return(0);
}
Modified: trunk/spectrum/version.h
===================================================================
--- trunk/spectrum/version.h 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/version.h 2012-05-16 09:59:11 UTC (rev 18286)
@@ -1,2 +1,2 @@
#define VERSION "$Id$ "
-/* DO NOT EDIT: Automated versioning hack [Tue May 15 19:36:05 EDT 2012] */
+/* DO NOT EDIT: Automated versioning hack [Wed May 16 05:58:01 EDT 2012] */
Modified: trunk/spectrum/wave_panel.c
===================================================================
--- trunk/spectrum/wave_panel.c 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/wave_panel.c 2012-05-16 09:59:11 UTC (rev 18286)
@@ -450,7 +450,7 @@
/* the Fucking Fish */
{
GdkPixmap *tb;
- GdkPixmap *tp=gdk_pixmap_create_from_xpm_d(root,&tb,NULL,fisharray);
+ GdkPixmap *tp=gdk_pixmap_create_from_xpm_d(root,&tb,NULL,fisharray_xpm);
GdkGC *cgc=gdk_gc_new(tp);
GdkGC *bgc=gdk_gc_new(tb);
int w, h;
Modified: trunk/spectrum/waveform-gtkrc
===================================================================
--- trunk/spectrum/waveform-gtkrc 2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/waveform-gtkrc 2012-05-16 09:59:11 UTC (rev 18286)
@@ -7,11 +7,11 @@
GtkButton::focus-line-width = 1
GtkButton::interior-focus = 0
- bg[NORMAL]="#c8b8ae"
- bg[ACTIVE]="#ffd4b4"
- bg[PRELIGHT]="#f0e0d0"
+ bg[NORMAL]="#c8c0b0"
+ bg[ACTIVE]="#f0d8b4"
+ bg[PRELIGHT]="#f0e0d0"
bg[SELECTED]="#f0e0d0"
- bg[INSENSITIVE]="#c8b8ae"
+ bg[INSENSITIVE]="#c8c0b0"
fg[NORMAL]="#000000"
fg[ACTIVE]="#000000"
@@ -23,7 +23,7 @@
text[ACTIVE]="#000000"
text[PRELIGHT]="#000000"
text[SELECTED]="#000000"
- text[INSENSITIVE]="#b8a494"
+ text[INSENSITIVE]="#b0a494"
}
style "panel" {
@@ -43,7 +43,7 @@
style "controlpanel" {
- bg[NORMAL]="#b8a494"
+ bg[NORMAL]="#b0a494"
text[NORMAL]="#000000"
text[ACTIVE]="#000000"
More information about the commits
mailing list