Poszukiwany / Poszukiwana chętny(a) do napisania _szybkiego_ kodu konwertującego zawartość standardowej kontrolki RichEdit na kod HTML. Napisane w C/C++, czyste WinAPI... W nagrodę gloria i chwała, oraz znacznie szybsze ukazanie się nowej wersji kIEview!
RichEdit posiada możliwość szybkiego wyciągania zawartości w formacie RTF, więc może być też po prostu konwerter RTF->HTML ...
Najlepiej w postaci funkcji
CODE
std::string rtfToHtml(HWND hwnd);
skolima
13.06.2005 - 16:27
Jak rozumiem trzymać powinien się JEPów, czyli żadnych <b> czy <font size=... Całe formatowanie oparte na <span style="..."> i poprawny xhtml. Czy się może mylę?
Właśnie spytałem google, o o tym sądzą. Odpowiedź brzmi 250-350$ za gotowy komponent. Czy ci ludzie [---] całkowicie?
Olórin
13.06.2005 - 17:36
Generalnie zamiast span - b, i, u, font byłyby bardziej wskazane... Po prostu GG.dll tylko takie obsługuje
Olórin
13.06.2005 - 18:37
Ale JEP-0071 przewiduje jedynie takie znaczniki:
http://www.jabber.org/jeps/jep-0071.html#def-text
skolima
13.06.2005 - 21:16
Czyli krótka piłka : potrzebne są obie wersje
riddle
13.06.2005 - 22:57
Z punktu widzenia poprawnosci <b> i <i> - mogą one byc, bo zwykle chcemy cos podkreslic i pogrubic a nie zaakcentowac waznosc... przynajmniej jesli chodzi o IM to liczy sie tylko wyglad. Błędem jest mówić, że w XHTML nalezy tylko strong i em uzywac, aczkolwiek (i to slowo moglo by zostac potraktowane strongiem) bylo by milo gdyby byly uzyte.
(Zdaje sobie sprawe, ze malo co pomagam takim postem, tylko chcialem zauwazyc ze czasem po prostu z tymi standardami nie nalezy przesadzac - znacznik font moze (zwlaszcza w IM) byc uzyty, bo nie wystepuje on 200x dla kazdego paragrafu i nie robi z wiadomosci tag-zupy)
Olórin
14.06.2005 - 06:16
No ale jednak twórcy XHTML-IM nie przewidzieli b,i,u czy font, pasowałoby więc się dostosować
OK, więc ustalmy że niech będzie przez <span> ... Właśnie modyfikuję gg.dll i przy okazji przeniosę go na Stamina.lib
KoSiarzPL
19.06.2005 - 01:57
Przysiadlem dzisiaj na jakies 6 godzin i wymyslilem to co jest w zalaczniku. Do poprawki jest jeszcze ley ukosnik i reagowanie na zamkniety "tag". To pojdzie raz dwa.
Troszke gorzej jest z wybranym kolorem i nazwa czcionki ale da sie to tez w miare szybko zrobic.
Problem jest tylko w tym ze jest to napisane w c#.
Zrobcie mozliwosc dodawania zalacznikow z rozszezeniem "ace".
[Edit]
usunalem zalacznik.
Olórin
19.06.2005 - 09:29
Sądze że z C# powino sie dać do C++ przerobić dość prosto
)) Ale narazie to działa tak średnio.... patrz: załącznik (ucięło znaczną część treści)
OT: Lepiej dodawaj .zip
za używanie rar mi sie kiedys tu dostało
KoSiarzPL
19.06.2005 - 11:16
W koncu siedzialem nad tym tylko 6h i wiem ze sporo jeszcze zostalo do zrobienia
Na razie dziala to tak ze zaklada iz jedna linijka jest pisana tym samym stylem. Wpisz kilka linijek i dla kazdej zmien styl i zobaczysz ze juz prawie dobrze dziala
(nie wylancza tylko wczesniej wlaczonych atrybutow ale to dzisiaj chyba zrobie)
KoSiarzPL
19.06.2005 - 16:40
Ok prawie gotowy juz konwertor, jeszcze pozostalo tylko uwzglednic kroj czcionki i pewnie dalej lewy ukosnik szwankuje ale to zrobie pewnie wieczorem.
Olórin
19.06.2005 - 17:10
No teraz to wypas
Aha, konwertuj bold nie do ogólnego font, a do font-weight:bold;, tak samo italic (do font-style)
A jeżeli coś jest nie ustawione to najlepiej wogóle pominąć
)
KoSiarzPL
19.06.2005 - 18:26
musi tak byc bo by sie zamotalo z zaginezdzaniem. Trzeba by bylo kombinowac a tak dla kazdej zmiany czcionki jest tworzony nowy font i nie ma problemu. Jak juz pozniej bedzie wszystko dzialac bedzie mozna zastanowic sie nad jakims pakowaniem tych danych formatujacych, by sie nie powtarzaly. Np. wyniesc color czcionki do oddzielnego "style".
[Edit]
Ostateczna werjsa juz jest gotowa jeszce tylko kosmetyczne zmiany.
KoSiarzPL
19.06.2005 - 21:11
Ok to chyba ostateczna wersja, potestujcie i zobaczcie czy wszystko gra.
[Edit]
zalacznik usuniety
skolima
19.06.2005 - 21:20
Jeden myk :
<span style="font-family: Microsoft Sans Seri, sans-serif;"> -> z nazwy czcionki łyknięte końcowe f.
Olórin
19.06.2005 - 21:27
I nazwa czcionki powinna być w cudzysłowu.... (szczególnie przy wielowyrazowych nazwach).
KoSiarzPL
20.06.2005 - 00:14
Fakt zapomnialem o cudzyslowiach. Blad z ucieta nazwa fontu tez poprawiony. Przy okazji pocwiczylem sobie tworzenie ruchomych suwakow w oknie hehe.
Nowa wersja:
[edit]
zalacznik usuniety
Przydałoby się jeszcze sam kod konwertujący mieć w C++ :]
No i ograniczyć ilość styli w spanie przez zagnieżdżanie...
Olórin
20.06.2005 - 11:50
Korsiarz - zamieść kod źródłowy w załączniku, spróbujemy przerobić do C++
KoSiarzPL
20.06.2005 - 13:32
QUOTE(hao @ 20.06.2005 - 11:20)
No i ograniczyć ilość styli w spanie przez zagnieżdżanie...
Powiem tak, jesli tekst po konwersji ma byc uzywany tylko do wyswietlania w kieview to upraszczanie skladni na razie mozna odlozyc na pozniej i zajac sie czyms istotniejszym. Jesli zas ten tekst ma byc wysylany przez siec to faktycznie moze byc to potrzebne do ograniczenia transferu. Zauwazcie jednak ze nikt nie uzywa w jednej wiadomosci wiecej niz dwoch styli, wiec tych "<span>" nie bedzie wcale tak duzo. Nie robilem wiekszych optymalizacji bo nie wiedzialem do czego to ma dokladnie sluzyc
Zagniezdzanie moglbym pewnie zrobic w dzien, gora dwa.
QUOTE(Olórin)
Korsiarz - zamieść kod źródłowy w załączniku, spróbujemy przerobić do C++
Oczywiscie, opatrze tylko kod potrzebnymi komentarzami i moze pozbede sie z jednej, dwoch nadmiarowych zmiennych. Staralem sie nie uzywac niczego co moglo by byc scisle zwiazane z C# wiec sama konwersja nie powinna sprawiac problemow. Moglbym nawet sam to zrobic ale zajme sie chyba czyms nowym, co najwyzej chetnie zobacze kod w C++ i przeanalizuje.
KoSiarzPL
20.06.2005 - 15:07
Tak wiec w zalaczniku jest nowa wersja programu jak i kod zrodlowy (niewielkie zmiany, mam nadzieje ze nic sie nie popsulo bo nie testowalem, na 99,999% nic sie nie zmienilo w dzialaniu).
Da sie to wszystko jeszcze przyspieszyc kosztem czytelnosci kodu. Miejscem gdzie nalezy szukac przyspieszenia jest zmniejszenie ilosci tworzonych obiektow klasy string. Kazda, najmniejsza modyfikacja obiektu string, tworzy nowy obiekt zamias go modyfikowac.
[edit]
zalacznik usuniety
Underline nigdy nie jest zamykany (każdy tag po tagu z underline jest underline). Rozwiązanie:
zamienić:
CODE
if (fraza == "ul")
{
underline = true;
}
na:
CODE
if (fraza == "ul")
{
underline = true;
}
else if (fraza == "ulnone")
{
underline = false;
}
KoSiarzPL
21.06.2005 - 12:42
Ups nie wiem kiedy ta linijka sie usunela. Zaraz wrzuce poprawiona wersje. Aha no i jak, mam przerabiac to c++ czy ktos sie tym zajmie, bo nie dostaje zadnych informacji od hao ktory poprosil o pomoc.
Obserwuje temat
Poza doczącą się tutaj dyskusją nie ma żadnych zakulisowych rozgrywek, więc jeżeli nikt nie zgłosił się tutaj na chętnego i czujesz się na siłach to bylibyśmy wdzięczni
KoSiarzPL
22.06.2005 - 13:28
Ok przerobilem kod na C++. Nie gwarantuje ze on dziala poniewaz nie przeprowadzalem ZADNYCH testow.
[edit]
zalacznik usuniety
Olórin
22.06.2005 - 14:19
Dołącz wszystkie pliki projektu (*.rc, *.h,*.sln,*.vcproj,...) bo nie można skompilować
arct!c
22.06.2005 - 15:01
teraz pozostaje nam tylko czekac na kIEview - dlugo to zajmie ?
KoSiarzPL
22.06.2005 - 15:33
Ok tak wiez wrzucal caly projekt w Cpp jak rowniez C# z naniesiona poprawka na "ulnone".
Trzeba by teraz zrobić zestaw testów na różnych danych wejściowych...
Bardzo dobrze mi się robi na CPPUnit... Szybko prosto i ładnie i z linii poleceń. Po każdej zmianie w kodzie uruchamiasz taki projekt i szybko namierzasz problemy...
Będzie o tym dzisiaj/jutro na moim blogu
QUOTE(hao @ 13.06.2005 - 19:38)
Generalnie zamiast span - b, i, u, font byłyby bardziej wskazane... Po prostu GG.dll tylko takie obsługuje
QUOTE(hao @ 14.06.2005 - 11:16)
OK, więc ustalmy że niech będzie przez <span> ... Właśnie modyfikuję gg.dll i przy okazji przeniosę go na Stamina.lib
wiec w jakim formacie ma byc?
CODE
<b><i><u><font color="#...">
czy
CODE
<span style="font-weight: bold; font-style: italic; text-decoration: underline; color: #ff0000;">
napisalem swoja klase konwertujaca (dziala w obu trybach), nie podobal mi sie kod ktory byl umieszczony w tym watku (sorry)
w gg.dll dziala <span> czy nie? lepiej wysylac w <span> czy <b> itd?
W gg.dll działa b i u. Wg specyfikacji Jabbera bodajże powinno się wysyłać span? W razie czego mogę dodać to do gg.dll...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.