Re: The Tempest



On Thu, 23 Nov 2000, David Mohring wrote:

> After lurking upon this list for a while, I think it it time to
> define ( if somewhat weirdly ) some concepts...
> 
> 
> And four classes of gnome office "suite" projects ...
> 
> Spirits :Iris,Ceres,Juno etc. 
> 	e.g.. Gnumeric, Dia, Evolution, Gimp 
> 	Existing native gnome applications - together as a suite.

Abi is an existing native Gnome application.

> 
> Sycorax : a Hag.
> 	e.g.. OpenOffice Koffice XEmacs-Gtk Abiword Gnucash
> 	Cross platform with a gnome-fied port.
> 	for each existing office suit and app, not native to gnome,
> 	get each to work within gnome and accept and serve bonobo'd 
> 	objects.

Abiword should not be here.
> 		 		
> Sycorax
> 	Pros
> 		Mostly working now 
> 		Cross platform ( aside from Gnome ) and therefore
> 			larger user base 
> 	Cons
> 		May lack common look and feel.
> 		Multi-Platform Abstraction layer.
> 			- larger memory footprint.
> 			- performance hit.
> 		Little code sharing between each vendors product
> 			- duplication of common services 
> 			- foreign vendor bonobo inclusion = lots more memory.
> 			- many interfaces to deal with
> 		Not under "direct" gnome foundation control.
> 

This does not apply to Abiword. Our memory footprint contains no xp layer
bloat. This is like teaching first year Physics classes. You have to say
the same thing 14 different ways before people understand. However it does
give me another excuse to post a code snippet to SHOW that abi on gnome is
a native application.

Obviously a word processor has to draw characters on the screen. Here is
the code in our xp section that calls the function to draw the characters
on the screen. This call is from abi/src/text/fmt/xp/fp_Run.cpp

        m_pG->drawChars(pText,0,iTextLen,xoffText,yoffText);

Here is the code that is directly executed by the above call:

>From abi/src/af/gr/unix/gr_UnixGraphics.cpp

--------------------------------------------------------------------------

void GR_UnixGraphics::drawChars(const UT_UCSChar* pChars, int iCharOffset,
							 int iLength,
UT_sint32 xoff, UT_sint32 yoff)
{
	if (!m_pFontManager)
		return;
	UT_ASSERT(m_pFont);
	WCTOMB_DECLS;
	GdkFont *font;
	GdkFont *EnglishFont;
	GdkFont *ChineseFont;
	m_pFont->explodeGdkFonts(EnglishFont,ChineseFont);
	UT_sint32 x;
	const UT_UCSChar *pC;
  	for(pC=pChars+iCharOffset, x=xoff; pC<pChars+iCharOffset+iLength;
++pC)
	  {
		UT_UCSChar actual = remapGlyph(*pC,UT_FALSE);
		font=XAP_EncodingManager::instance->is_cjk_letter(actual)?
ChineseFont: EnglishFont;
		CONVERT_TO_MBS(actual);

gdk_draw_text(m_pWin,font,m_pGC,x,yoff+font->ascent,text,text_length);
		x+=gdk_text_width(font, text, text_length);
	  }	
	flush();
}

We call straight down to gdk. No intervening layer at all. I'll say it
again. There is no intervening layer in AbiWord.

I'll keep posting code snippets to prove this as long as people keep
saying this.

Cheers

Martin






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