AbiWord
Tomasz Kłoczko
kloczek w rudy.mif.pg.gda.pl
Pią, 9 Sie 2002, 19:13:21 CEST
On 9 Aug 2002, Tomasz Witek wrote:
[..]
> > char * full_name = new char[strlen(XAP_App::getApp()->getAbiSuiteLibDir())+30];
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > strcpy(full_name, m_fontfile);
> >
> > char * slash = strrchr(full_name, '/');
> > if(slash)
> > *(slash+1) = 0;
> >
> > //first we look for a locale specific file locale.u2g in the same directory as this font
> > strcat(full_name, "locale.u2g");
> > UT_DEBUGMSG(("UnixFont: trying to open locale specific encoding file [%s]\n", full_name));
> >
> >
> > Generalnie trzebaby pooglądać wszystkie wołania
> > XAP_App::getApp()->getAbiSuiteLibDir() i powymieniać na wstawienie
> > konkretnej ściżki.
> > Przy okzji .. sa tam takei kwiatki jak:
> >
> > sprintf(cmdline, "%s/bin/ttftool -f %sttf -a %safm -u %su2g -p %st42 -e %s",
> > ^^^^^^^^^^^^^^
> > libdir, fontfile, fontfile, fontfile, fontfile,enc);
> > ^^^^^^
> >
> > Czy inne podobne które szukaj konkretnych nrzędzie w $(libdir)/bin/ :>
> > To też trzebaby powymieniać. Mówiąc inaczje abiqword wygląda, że w obecnej
> > postaci tak wogóle średnio nadaje się do użytku.
> >
> > kloczek
>
> To u gory nic mi nie mowi. Jak dla mnie jest to nielogiczne, moze ktos
> kto to kuma nich to poprawi. Tylko trzeba pamietac o defaultowych
> fontach ktore sa w /usr/X11R6/share/AbiSuite/fonts.
Masz rację że to jest nielogiczne :>
XAP_App::getApp()->getAbiSuiteLibDir() to
a af/xap/xp/xap_App.cpp:
const char * XAP_App::getAbiSuiteLibDir() const
{
return m_szAbiSuiteLibDir;
}
Znowusz contst char* m_szAbiSuiteLibDir z tego obiektu jest wypełniany
w af/xap/xp/xap_App.cpp:
void XAP_App::_setAbiSuiteLibDir(const char * sz)
{
FREEP(m_szAbiSuiteLibDir);
UT_cloneString((char *&)m_szAbiSuiteLibDir,sz);
}
A sama funkcja XAP_App::_setAbiSuiteLibDir() jest wołana przy inicjacji
dostająć dodatkowe rzeczy z obiektu zaleznego od architektóry ..
i jeszcze gdzieś kilka poziomów dalej jest używane $(libdir) przekazne z
Makefile. To *jest* chore. Wszystkie te rzeczy są wykorzystywane tylko raz
przy stacie programu i można było to zrobić znacznie prościej i to
szczególnie w backend dla unices bo cała ta zabawa jest głównie dla Win*
które nie ma FHS i dla którego musi być robiona cała ta zabawa z gotową
infrastruktórą, w którą bedzie moząń gdzieś wstrzelić gdzieś domyślenie
się gdzie to są zainstalowane pliki potrzebne dla AbiWorda.
W ten sposób w całosć pakowana jest tona kodu winikowego który tak naprawę
prłni rolę ozdobnika i ładnie wyglądajacej konstrukcji :>
Takich rzeczy w tym programie znajdziesz więcej. Mówiąc inaczje ten
program ma wrodzone wodogłowie, a wiekszosć kombinowania wynika z
głupich zasad porotowanai całości na rózne platformy (zamiast przyjać że pewne
rzeczy są zależne od platformy to tworzy się ogólny interfejs któremu
przekazuje się on run-time różne parametry w postaci obiektótów które to
onbiekty dopiero coś robią. Już sama analiza niektórych ciągu powiązań
przyprawia o zawrót głowy ..
O tym że stosuje sie włsne rozwiązanie o umiedzynarodowieni aplikacji (nie
popzrez gettext) któtre .. też jest obiektowe juz nie wspomnę (na
wszystkich platformach na które sportowany jest AbiWord gettext jest
dostępny i działający).
> AbiWord przychodzi ze swoimi fontami, wiec i je trzeba by wrzucuc do
> odpowiedniej sciezki a nie tam gdzie sa. Poza tym nie zgadzam sie z tym
> ze nie nadaje sie do uzytku, kozystam z niego z dosc ograniczonym
> zakresie, ale spisuje sie znakomicie, wole jego od kworda ktory
> niewiedamo czasem jak sie zachowa.
Tu się jednak mylisz :)
Niewielkim konsztem w tą cąłą taplaninę z czapamie obiektowymi na obiekty
do obiektów można wstrzelić pzrekazanie wprost ścieżki która przychodzi ze
środowiska Makefile. Pounkt wstrzlenia dla fontów podałem :)
kloczek
--
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*
Więcej informacji o liście dyskusyjnej pld-devel-pl