Re: New interface: AtkStreamableContent



I have tried to put toghether a .h file based on the previous discussion.

Comemnts requested.

I have not run it through a compiler yet so there may be compilation errors.

Padraig


> 
> Peter Korn wrote:
> > 
> > Hi Bill,
> > 
> > I think this is an excellent idea - having a clean, formal interface to get 
at
> > underlying the content used for various pieces of the user-interface.  
> 
> Hi Peter:
> 
> Good to hear that you think it's useful.
> 
> [...]
> 
> >  My only real concern is the
> > semantics of interacting with this interface.  Should we have a simple 
stream
> > interface? 
> 
> I think that if we return something generic (similar to Java's
> InputStream) then we can leave it to the implementation as to whether
> rewind(), etc., are supported on the back end.  Then the caller is
> responsible for behaving appropriately and not assuming that all
> streams are rewindable, etc., the AT can buffer is the source cannot,
> etc.  My thought is, allow the object to implement as much as it
> wants, but require only a minimum.
> 
> > How do we define multiple
> > different mime types available for the data?
> 
> I figure that the get_mime_type method might return multiple mimetypes
> (probably as an array of strings).  The only question is one of the
> exact method signature.
>  
> > Regards,
> > 
> > Peter Korn
> > Sun Accessibility team
> 
> regards,
> 
> -Bill
> 
> -- 
> --------------
> Bill Haneman
> Gnome Accessibility / Batik SVG Toolkit
> Sun Microsystems Ireland
> 
> 
/* ATK -  Accessibility Toolkit
 * Copyright 2001 Sun Microsystems Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#ifndef __ATK_STREAMABLE_CONTENT_H__
#define __ATK_STREAMABLE_CONTENT_H__

#include <atk/atkobject.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/*
 * The AtkValue interface should be supported by any object that 
 * supports a numerical value (e.g., a scroll bar). This interface 
 * provides the standard mechanism for an assistive technology to 
 * determine and set the numerical value as well as get the minimum 
 * and maximum values.
 */

#define ATK_TYPE_STREAMABLE_CONTENT       (atk_streamable_content_get_type ())
#define ATK_IS_STREAMABLE_CONTENT(obj)    G_TYPE_CHECK_INSTANCE_TYPE ((obj), ATK_TYPE_STREAMABLE_CONTENT)
#define ATK_STREAMABLE_CONTENT(obj)       G_TYPE_CHECK_INSTANCE_CAST ((obj), ATK_TYPE_STREAMABLE_CONTENT, AtkStreamableContent)
#define ATK_STREAMABLE_CONTENT(obj)       (G_TYPE_INSTANCE_GET_INTERFACE ((obj), ATK_TYPE_STREAMABLE_CONTENT, AtkStreamableContentIface))

#ifndef _TYPEDEF_ATK_STREAMABLE_CONTENT
#define _TYPEDEF_ATK_STREAMABLE_CONTENT
typedef struct _AtkStreamableContent AtkStreamableContent;
#endif
typedef struct _AtkStreamableContentIface AtkStreamableContentIface;

struct _AtkStreamableContentIface
{
  GTypeInterface parent;

  /*
   * Get the number of mime types supported by this object
   */
  gint                      (* get_n_mime_types)  (AtkStreamableContent     *streamable);
  /*
   * Gets the specified mime type supported by this object.
   * The mime types are 0-based so the dirst mime type is 
   * at index 0, the second at index 1 and so on.
   *
   * This assumes that the strings for the mime types are stored in the
   * AtkStreamableContent. Alternatively the G_CONST_RETURN could be removed
   * and the caller would be responsible for calling g_free() on the
   * returned value.
   */
  G_CONST_RETURN gchar*     (* get_mime_type)     (AtkStreamableContent     *streamable,
                                                   gint                     i);
  /*
   * Is one possible implementation for this method that it constructs the
   * content appropriate for the mime type and then creates a temporary
   * file containing the content, opens the file and then calls
   * g_io_channel_unix_new_fd().
   */
  GIOChannel*               (* get_stream)        (AtkStreamableContent     *streamable,
                                                   const gchar              *mime_type);

};
GType            atk_streamable_content_get_type (void);

gint             atk_streamable_content_get_n_mime_types (AtkSTreamableContent     *streamable);
                                                       
G_CONST_RRTURN   atk_streamable_content_get_mime_type    (AtkStreamableContent     *streamable,
                                                          gint                     i);
GIOChannel*      atk_streamable_content_get_stream       (AtkStreamableContent     *streamable,
                                                          const gchar              *mime_type);


#ifdef __cplusplus
}
#endif /* __cplusplus */


#endif /* __ATK_STREAMABLE_CONTENT_H__ */


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