octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Setting the fontname and size of text


From: Shai Ayal
Subject: Re: Setting the fontname and size of text
Date: Tue, 13 Nov 2007 17:03:11 +0200

On Nov 13, 2007 4:57 PM, David Bateman <address@hidden> wrote:
> Shai Ayal wrote:
> > David,
> >
> > I wish you would use the radio_value class for these properties. That
> > way you would gain automatic validity checks. I'll try to submit a
> > patch tonight if you don't beat me to it
> >
> > Shai
> >
> >
> Ok, then what about the attached..
>
>
> D.
>
> --
> David Bateman                                address@hidden
> Motorola Labs - Paris                        +33 1 69 35 48 04 (Ph)
> Parc Les Algorithmes, Commune de St Aubin    +33 6 72 01 06 33 (Mob)
> 91193 Gif-Sur-Yvette FRANCE                  +33 1 69 35 77 01 (Fax)
>
> The information contained in this communication has been classified as:
>
> [x] General Business Information
> [ ] Motorola Internal Use Only
> [ ] Motorola Confidential Proprietary
>
>
> *** ./scripts/plot/__go_draw_axes__.m.orig3     2007-11-13 10:21:50.106992986 
> +0100
> --- ./scripts/plot/__go_draw_axes__.m   2007-11-13 11:13:47.990435630 +0100
> ***************
> *** 60,68 ****
>         fputs (plot_stream, "unset title;\n");
>         else
>         if (isempty (t.fontname))
> !         f = "Helvetica";
>         else
> !         f = t.fontname;
>         endif
>         if (isempty (t.fontsize))
>           s = 10;
> --- 60,82 ----
>         fputs (plot_stream, "unset title;\n");
>         else
>         if (isempty (t.fontname))
> !         f = "helvetica";
>         else
> !         f = tolower (t.fontname);
> !       endif
> !       if (! isempty(t.fontweight) &&
> !           strcmp (tolower (t.fontweight), "bold"))
> !         if (! isempty(t.fontangle) &&
> !             (strcmp (tolower (t.fontangle), "italic") ||
> !             strcmp (tolower (t.fontangle), "oblique")))
> !           f = strcat (f, "-bolditalic");
> !         else
> !           f = strcat (f, "-bold");
> !         endif
> !       elseif (! isempty(t.fontangle) &&
> !               (strcmp (tolower (t.fontangle), "italic") ||
> !               strcmp (tolower (t.fontangle), "oblique")))
> !         f = strcat (f, "-italic");
>         endif
>         if (isempty (t.fontsize))
>           s = 10;
> ***************
> *** 81,89 ****
>         fputs (plot_stream, "unset xlabel;\n");
>         else
>         if (isempty (t.fontname))
> !         f = "Helvetica";
>         else
> !         f = t.fontname;
>         endif
>         if (isempty (t.fontsize))
>           s = 10;
> --- 95,117 ----
>         fputs (plot_stream, "unset xlabel;\n");
>         else
>         if (isempty (t.fontname))
> !         f = "helvetica";
>         else
> !         f = tolower (t.fontname);
> !       endif
> !       if (! isempty(t.fontweight) &&
> !           strcmp (tolower (t.fontweight), "bold"))
> !         if (! isempty(t.fontangle) &&
> !             (strcmp (tolower (t.fontangle), "italic") ||
> !             strcmp (tolower (t.fontangle), "oblique")))
> !           f = strcat (f, "-bolditalic");
> !         else
> !           f = strcat (f, "-bold");
> !         endif
> !       elseif (! isempty(t.fontangle) &&
> !               (strcmp (tolower (t.fontangle), "italic") ||
> !               strcmp (tolower (t.fontangle), "oblique")))
> !         f = strcat (f, "-italic");
>         endif
>         if (isempty (t.fontsize))
>           s = 10;
> ***************
> *** 108,116 ****
>         fputs (plot_stream, "unset ylabel;\n");
>         else
>         if (isempty (t.fontname))
> !         f = "Helvetica";
>         else
> !         f = t.fontname;
>         endif
>         if (isempty (t.fontsize))
>           s = 10;
> --- 136,158 ----
>         fputs (plot_stream, "unset ylabel;\n");
>         else
>         if (isempty (t.fontname))
> !         f = "helvetica";
>         else
> !         f = tolower (t.fontname);
> !       endif
> !       if (! isempty(t.fontweight) &&
> !           strcmp (tolower (t.fontweight), "bold"))
> !         if (! isempty(t.fontangle) &&
> !             (strcmp (tolower (t.fontangle), "italic") ||
> !             strcmp (tolower (t.fontangle), "oblique")))
> !           f = strcat (f, "-bolditalic");
> !         else
> !           f = strcat (f, "-bold");
> !         endif
> !       elseif (! isempty(t.fontangle) &&
> !               (strcmp (tolower (t.fontangle), "italic") ||
> !               strcmp (tolower (t.fontangle), "oblique")))
> !         f = strcat (f, "-italic");
>         endif
>         if (isempty (t.fontsize))
>           s = 10;
> ***************
> *** 853,861 ****
>           endif
>
>           if (isempty (obj.fontname))
> !           f = "Helvetica";
>           else
> !           f = obj.fontname;
>           endif
>           if (isempty (obj.fontsize))
>             s = 10;
> --- 895,917 ----
>           endif
>
>           if (isempty (obj.fontname))
> !           f = "helvetica";
>           else
> !           f = tolower(obj.fontname);
> !         endif
> !         if (! isempty(obj.fontweight) &&
> !             strcmp (tolower (obj.fontweight), "bold"))
> !           if (! isempty(obj.fontangle) &&
> !               (strcmp (tolower (obj.fontangle), "italic") ||
> !               strcmp (tolower (obj.fontangle), "oblique")))
> !             f = strcat (f, "-bolditalic");
> !           else
> !             f = strcat (f, "-bold");
> !           endif
> !         elseif (! isempty(obj.fontangle) &&
> !                 (strcmp (tolower (obj.fontangle), "italic") ||
> !                 strcmp (tolower (obj.fontangle), "oblique")))
> !           f = strcat (f, "-italic");
>           endif
>           if (isempty (obj.fontsize))
>             s = 10;
> *** ./src/graphics.h.in.orig3   2007-11-13 10:18:08.677130836 +0100
> --- ./src/graphics.h.in 2007-11-13 15:36:50.836464962 +0100
> ***************
> *** 351,356 ****
> --- 351,463 ----
>     Matrix cmap;
>   };
>
> + class
> + string_property
> + {
> + public:
> +   string_property (const octave_value& c = octave_value (std::string()),
> +                 const radio_values& v = radio_values ())
> +     : radio_val (v)
> +   {
> +     if (c.is_defined ())
> +       {
> +       std::string newval = c.string_value ();
> +       std::transform (newval.begin (), newval.end (),
> +                       newval.begin (), tolower);
> +
> +       if (!error_state)
> +         {
> +           if (radio_val.validate (newval))
> +             current_val = newval;
> +         }
> +       }
> +     else
> +       current_val = v.default_value ();
> +   }
> +
> +   string_property (const radio_values& v)
> +     : current_val (v.default_value()), radio_val (v)
> +   { }
> +
> +   string_property (const radio_values& v, const std::string& initial_value)
> +     : radio_val (v)
> +   {
> +     current_val = initial_value;
> +     std::transform (current_val.begin (), current_val.end (),
> +                   current_val.begin (), tolower);
> +   }
> +
> + }
> +
> +   operator octave_value (void) const
> +   {
> +     return current_val;
> +   }
> +
> +   string_property& operator = (const string_property& a)
> +   {
> +     if (&a != this)
> +       {
> +       current_val = a.current_val;
> +       radio_val = a.radio_val;
> +       }
> +
> +     return *this;
> +   }
> +
> +   string_property& operator = (const std::string& s)
> +   {
> +     std::string newval = s;
> +     std::transform (newval.begin (), newval.end (),
> +                   newval.begin (), tolower);
> +
> +     if (! newval.empty ())
> +       {
> +       if (radio_val.contains (newval))
> +         current_val = newval;
> +       else
> +         error ("invalid string specification");
> +       }
> +     else
> +       error ("invalid string specification");
> +
> +     return *this;
> +   }
> +
> +   string_property& operator = (const octave_value& val)
> +   {
> +     if (val.is_string ())
> +       {
> +       std::string newval = val.string_value ();
> +       std::transform (newval.begin (), newval.end (),
> +                       newval.begin (), tolower);
> +
> +       if (! newval.empty ())
> +         {
> +           if (radio_val.contains (newval))
> +             current_val = newval;
> +           else
> +             error ("invalid string specification");
> +         }
> +       else
> +         error ("invalid string specification");
> +       }
> +     else
> +       error ("invalid string specification");
> +
> +     return *this;
> +   }
> +
> +   const std::string& current_value (void) const
> +   {
> +     return current_val;
> +   }
> +
> + private:
> +   std::string current_val;
> +   radio_values radio_val;
> + };
> +
>   // ---------------------------------------------------------------------
>
>   class property_name : public std::string
> ***************
> *** 1412,1417 ****
> --- 1519,1526 ----
>         color_property color
>         octave_value fontname
>         octave_value fontsize
> +       string_property fontangle a
> +       string_property fontweight a
>       END_PROPERTIES
>
>       static std::string go_name;
> *** ./src/graphics.cc.orig3     2007-11-13 10:18:01.541511035 +0100
> --- ./src/graphics.cc   2007-11-13 15:09:57.708124850 +0100
> ***************
> *** 1919,1925 ****
>       horizontalalignment ("left"),
>       color (Matrix (1, 3, 0.0)),
>       fontname ("Helvetica"),
> !     fontsize (10)
>   { }
>
>   void
> --- 1919,1927 ----
>       horizontalalignment ("left"),
>       color (Matrix (1, 3, 0.0)),
>       fontname ("Helvetica"),
> !     fontsize (10),
> !     fontangle (radio_values ("{normal}|italic|oblique")),
> !     fontweight (radio_values ("{normal}|bold|demi|light"))
>   { }
>
>   void
> ***************
> *** 1952,1957 ****
> --- 1954,1963 ----
>       set_fontname (val);
>     else if (name.compare ("fontsize"))
>       set_fontsize (val);
> +   else if (name.compare ("fontangle"))
> +     set_fontangle (val);
> +   else if (name.compare ("fontweight"))
> +     set_fontweight (val);
>     else
>       {
>         modified = false;
> ***************
> *** 1979,1984 ****
> --- 1985,1992 ----
>     m.assign ("color", color);
>     m.assign ("fontname", fontname);
>     m.assign ("fontsize", fontsize);
> +   m.assign ("fontangle", fontangle);
> +   m.assign ("fontweight", fontweight);
>
>     return m;
>   }
> ***************
> *** 2012,2017 ****
> --- 2020,2029 ----
>       retval = fontname;
>     else if (name.compare ("fontsize"))
>       retval = fontsize;
> +   else if (name.compare ("fontangle"))
> +     retval = fontangle;
> +   else if (name.compare ("fontweight"))
> +     retval = fontweight;
>     else
>       warning ("get: invalid property `%s'", name.c_str ());
>
> ***************
> *** 2031,2036 ****
> --- 2043,2052 ----
>     m["color"] = Matrix (1, 3, 1.0);
>     m["fontname"] = "Helvetica";
>     m["fontsize"] = 10;
> +   m["fontangle"] =
> +       string_property ("normal", radio_values ("{normal}|italic|oblique"));
> +   m["fontweight"] =
> +     string_property ("normal", radio_values ("{normal}|bold|demi|light"));
>
>     return m;
>   }
>
> 2007-11-13  David Bateman  <address@hidden>
>
>         * plot/__go_draw_axes.m: Allow the fontangle and fontweight to be
>         specified for the title, xlabel, ylabel and text objects.
>
> 2007-11-12  David Bateman  <address@hidden>
>
>         * graphics.h.in, graphics.cc (class text): Add the fontangle and
>         fontweight properties. Add string_property class to handle the
>         string radio values.
>

I'm away from my development computer, so I can't verify, but don't we
have a radio_property which does exactly what your new string_property
does?
I'm sorry if I mislead you with my previous email refering to
radio_value instead of radio_property

Shai


reply via email to

[Prev in Thread] Current Thread [Next in Thread]