Re: [[gtkmm] New pangomm interface issue]



At Mon, 2 Sep 2002 10:56:35 +0200,
Martin Schulze wrote:
> 
> Am 31.08.2002 11:44 schrieb(en) Murray Cumming:
> > Naofumi Yasufuku <naofumi yasufuku net> wrote:
> > > Hi,
> > >
> > > In gtkmm-1.3.22, some pangomm interfaces have been changed, and so
> > > I'm faced with some problems.
> > >
> > > I want to call Pango::Font::get_matrics() with NULL language argument
> > > to indicate to get the metrics for the entire font.
> > > But I cannot do it because new interface requires a const reference to
> > > Language.
> > >
> > > pango C API allows pango_font_get_metrics(font, NULL), but pangomm
> > > doesn't allow it.
> > >
> > > I think Pango::Font should provide
> > >
> > >   FontMetrics Font::get_metrics()
> > >   {
> > >     return FontMetrics((pango_font_get_metrics(gobj(), 0)));
> > >   }
> > >
> > > to support pango C API specification completely.
> 
> Please wait with this change. In the process of documenting pangomm I
> found that a default contructor for Pango::Language that creates an
> invalid object (gobject_ = 0) is needed anyway. So this could also
> be implemented with a default argument then:
> 
> Pango::Font::get_metrics(const Language& lang = Language())
> 
> What do you think is the better solution - Function overload or
> default argument?
> 

I think there are some solutions.

 1. Implement Font::get_metrics() with no argument.

      FontMetrics Font::get_metrics()
      {
        return FontMetrics((pango_font_get_metrics(gobj(), 0)));
      }

 2. Add default constructor Language::Language(), and implement
    Font::get_metrics() with default argument.

      FontMetrics Font::get_metrics(const Language& lang = Language())

 3. Fix Language::Language(const char* language) as follows.

      Language::Language(const char* language)
      :
        gobject_((language) ? pango_language_from_string(language) : 0)
      {}

    font.get_metrics(0) means font.get_metrics(Language(0)).

1. might be efficient.
2. creates unnecessary instance.
3. utilizes implicit conversion. I think it is not recommended way.

Regards,
--Naofumi



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