From d1d1bb6de0bb56ed35f02c311e27f54b13e247c9 Mon Sep 17 00:00:00 2001 From: Andreas Oberritter Date: Sat, 15 Aug 2009 17:47:50 +0200 Subject: [PATCH] delete some unused source files --- lib/base/nxml.cpp | 339 ------------------ lib/gdi/font.cpp-new | 787 ----------------------------------------- lib/network/xmlrpc.cpp | 523 --------------------------- lib/network/xmlrpc.h | 82 ----- 4 files changed, 1731 deletions(-) delete mode 100644 lib/base/nxml.cpp delete mode 100644 lib/gdi/font.cpp-new delete mode 100644 lib/network/xmlrpc.cpp delete mode 100644 lib/network/xmlrpc.h diff --git a/lib/base/nxml.cpp b/lib/base/nxml.cpp deleted file mode 100644 index f32880a6..00000000 --- a/lib/base/nxml.cpp +++ /dev/null @@ -1,339 +0,0 @@ -#include -#include - -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifdef HAVE_TIME_H -#include -#endif - -#ifdef HAVE_LIBXML2 -#include -#include -#include -#else -#define xmlChar char -#endif /* HAVE_LIBXML2 */ - -#define DE(x) ((struct nc_de_s *) (data+(x))) -#define IDE(x, y) (DE(((unsigned *) (data+(x)->offset))[(y)])) -#define XML_DE ((const xmlChar *) "dirEntry") -#define XML_NS ((const xmlChar *) "http://hq.alert.sk/projects/nconfig") -#define XML_ROOT ((const xmlChar *) "NConfigExport") - -static char *encodeXml(const char *what) -{ - unsigned p = 0, size = 6*strlen(what)+1; - char *ret = (char *)malloc(size); - for (; *what; what++) { - switch (*what) { - case '"': - ret[p++] = '&'; - ret[p++] = 'q'; - ret[p++] = 'u'; - ret[p++] = 'o'; - ret[p++] = 't'; - ret[p++] = ';'; - continue; - case '>': - ret[p++] = '&'; - ret[p++] = 'q'; - ret[p++] = 't'; - ret[p++] = ';'; - continue; - case '<': - ret[p++] = '&'; - ret[p++] = 'l'; - ret[p++] = 't'; - ret[p++] = ';'; - continue; - case '&': - ret[p++] = '&'; - ret[p++] = 'a'; - ret[p++] = 'm'; - ret[p++] = 'p'; - ret[p++] = ';'; - continue; - } - if (*what >= 0x20 || *what == '\n' || *what == '\r' || *what == '\t') - ret[p++] = *what; - else - p += sprintf(ret+p, "&#%d;", *what); - } - ret[p] = '\0'; - return ret; -} - -void NConfig::store(nc_de_s *de, FILE *f) -{ - struct nc_de_s *cc; - for (unsigned i=0; ipages; i++) - if ((cc = IDE(de, i))->type) { - char *encname = encodeXml(data+cc->name); - fprintf(f, "type); - free(encname); - switch (cc->type) { - case NC_DIR: - fprintf(f, "%u\">\n", cc->pages); - store(cc, f); - fprintf(f, "\n", XML_DE); - break; - case NC_STRING: - fprintf(f, "%s\"/>\n", encname = encodeXml(data+cc->offset)); - free(encname); - break; - case NC_INT: - fprintf(f, "%lld\"/>\n", *((signed long long *) (data+cc->offset))); - break; - case NC_UINT: - fprintf(f, "%llu\"/>\n", *((unsigned long long *) (data+cc->offset))); - break; - case NC_DOUBLE: - fprintf(f, "%La\"/>\n", *((long double *) (data+cc->offset))); - break; - case NC_RAW: - { - const char *raw = data+cc->offset; - for (unsigned j=0; jpages; j++) - fprintf(f, "%d%d%d", raw[j] / 100, (raw[j] % 100) / 10, raw[j] % 10); - fprintf(f, "\"/>\n"); - } - } - } -} - -int NConfig::toXML(const char *filename) -{ - if (fd < 0) - return NC_ERR_NFILE; - - FILE *f = fopen(filename, "w"); - if (!f) - return NC_ERR_PERM; - - fprintf(f, "%s", "\n"); - fprintf(f, "\n"); - lockFile(NC_L_RO); - - store(rdir, f); - - unLockFile(); - fprintf(f, "\n", XML_ROOT); - fclose(f); - return NC_ERR_OK; -} - -#ifdef HAVE_LIBXML2 -static xmlSAXHandler sh; -enum stateEnum {noRoot = 0, inRoot, inDir, inEnt, unknown}; - -struct ncParseState { - stateEnum state, pState; - xmlChar *ns; - unsigned depth; - unsigned unDepth; - unsigned force; - NConfig *which; -}; - -static int ncXmlSAXParseFile(xmlSAXHandlerPtr sax, void *user_data, const char *filename) -{ - int ret = 0; - xmlParserCtxtPtr ctxt = xmlCreateFileParserCtxt(filename); - if (!ctxt) - return -1; - ctxt->sax = sax; - ctxt->userData = user_data; - xmlParseDocument(ctxt); - ret = ctxt->wellFormed ? 0 : -1; - if (sax) - ctxt->sax = NULL; - xmlFreeParserCtxt(ctxt); - return ret; -} - -static xmlEntityPtr ncXmlGetEntity(void *user_data, const CHAR *name) -{ - return xmlGetPredefinedEntity(name); -} - -static void ncXmlStartElement(void *user_data, const CHAR *name, const CHAR **attrs) -{ - struct ncParseState *p = (struct ncParseState *)user_data; -#ifdef NC_DEBUG_XML - fprintf(stderr, "New element %s state=%d %s\n", name, p->state, p->ns); -#endif - if (p->state == unknown) { - p->unDepth++; - return; - } - if (p->state == noRoot) { - while (*attrs) { - if (!xmlStrncmp(*attrs, (const xmlChar *) "xmlns:", 6)) { - if (!xmlStrcmp(attrs[1], XML_NS)) { - p->ns = xmlStrdup((*attrs)+6); - break; - } - } - attrs += 2; - } - char *b = (char *) malloc(xmlStrlen(p->ns)+xmlStrlen(XML_ROOT)+2); - sprintf(b, "%s:%s", p->ns, XML_ROOT); - if (xmlStrcmp(name, (xmlChar *)b)) { -#ifdef NC_DEBUG_XML - fprintf(stderr, "NewElement, entering unknown %s\n", name); -#endif - p->pState = p->state; - p->state = unknown; - } else - p->state = inRoot; - free(b); - return; - } - if (p->state == inRoot || p->state == inDir) { - const xmlChar *value = NULL, *n = NULL; - int type = 0; - while (*attrs) { - if (!xmlStrcmp(*attrs, (const xmlChar *)"value")) - value = attrs[1]; - if (!xmlStrcmp(*attrs, (const xmlChar *)"name")) - n = attrs[1]; - if (!xmlStrcmp(*attrs, (const xmlChar *)"type")) - type = atoi(attrs[1]); - attrs += 2; - } -#ifdef NC_DEBUG_XML - fprintf(stderr, "%s %s %s %d %d\n", name, n, value, type, p->state); -#endif - char *b = (char *) malloc(xmlStrlen(p->ns)+xmlStrlen(XML_DE)+2); - sprintf(b, "%s:%s", p->ns, XML_DE); - if (xmlStrcmp(name, (xmlChar *)b) || !type || !value || !n) { -#ifdef NC_DEBUG_XML - fprintf(stderr, "NewElement, entering unknown on mismatch\n"); -#endif - p->pState = p->state; - p->state = unknown; - free(b); - return; - } - free(b); - if (p->force) - p->which->delKey((const char *)n); - - switch (type) { - case NC_DIR: - if (p->which->createDir((const char *)n, strtoul((const char *)value, NULL, 0)) != NC_ERR_OK) { - p->pState = p->state; - p->state = unknown; -#ifdef NC_DEBUG_XML - fprintf(stderr, "NewElement, entering unknown on failed mkdir\n"); -#endif - return; - } - p->which->chDir((const char *)n); - break; - case NC_STRING: - p->which->setKey((const char *)n, (const char *)value); - break; - case NC_INT: - p->which->setKey((const char *)n, strtoll((const char *)value, NULL, 0)); - break; - case NC_UINT: - p->which->setKey((const char *)n, strtoull((const char *)value, NULL, 0)); - break; - case NC_DOUBLE: - { - long double c; - sscanf((const char *)value, "%La", &c); - p->which->setKey((const char *)n, c); - } - break; - case NC_RAW: - { - unsigned size = xmlStrlen(value) / 3; - char *dec = NULL; - if (size) { - dec = (char *)malloc(size); - for (unsigned i=0, k=0; iwhich->setKey((const char *)n, dec, size); - free(dec); - } - } - if (type == NC_DIR) { - p->state = inDir; - p->depth++; - } else { - p->pState = p->state; - p->state = inEnt; - } - return; - } -} - -static void ncXmlEndElement(void *user_data, const CHAR *name) -{ - struct ncParseState *p = (struct ncParseState *)user_data; -#ifdef NC_DEBUG_XML - fprintf(stderr, "EndElement %s %s %d\n", name, p->ns, p->state); -#endif - if (p->state == inEnt) { - p->state = p->pState; - return; - } - if (p->state == unknown) { - if (p->unDepth) - p->unDepth--; - else - p->state = p->pState; - return; - } - if (p->state == inRoot) { - p->state = noRoot; - free(p->ns); - p->ns = NULL; - return; - } - if (p->state == inDir) { - p->depth--; - if (!p->depth) - p->state = inRoot; - p->which->chDir(".."); - } -} -#endif /* HAVE_LIBXML2 */ - -int NConfig::fromXML(const char *filename, int force) -{ - if (fd < 0) - return NC_ERR_NFILE; - if (omode != NC_O_RW) - return NC_ERR_PERM; -#ifndef HAVE_LIBXML2 - return NC_ERR_NOSUPPORT; -#else - struct ncParseState state = { noRoot, noRoot, NULL, 0, 0, force, this }; - sh.getEntity = ncXmlGetEntity; - sh.startElement = ncXmlStartElement; - sh.endElement = ncXmlEndElement; - - lockFile(NC_L_RW); - cdir = rdir; - int ret = ncXmlSAXParseFile(&sh, &state, filename); - cdir = rdir; - unLockFile(); - - return ret < 0 ? NC_ERR_NVAL : NC_ERR_OK; -#endif /* HAVE_LIBXML2 */ -} - diff --git a/lib/gdi/font.cpp-new b/lib/gdi/font.cpp-new deleted file mode 100644 index 143374b4..00000000 --- a/lib/gdi/font.cpp-new +++ /dev/null @@ -1,787 +0,0 @@ -#include - -#include -#include -#include -#include -#include -#include - -// use this for init Freetype... -#include -#include FT_FREETYPE_H - -#include -#include -#include -#include -#include - -#include - -fontRenderClass *fontRenderClass::instance; -static eLock ftlock; -static FTC_Font cache_current_font=0; - -struct fntColorCacheKey -{ - gRGB start, end; - fntColorCacheKey(const gRGB &start, const gRGB &end) - : start(start), end(end) - { - } - bool operator <(const fntColorCacheKey &c) const - { - if (start < c.start) - return 1; - else if (start == c.start) - return end < c.end; - return 0; - } -}; - -std::map colorcache; - -static gLookup &getColor(const gPalette &pal, const gRGB &start, const gRGB &end) -{ - fntColorCacheKey key(start, end); - std::map::iterator i=colorcache.find(key); - if (i != colorcache.end()) - return i->second; - gLookup &n=colorcache.insert(std::pair(key,gLookup())).first->second; - eDebug("[FONT] creating new font color cache entry %02x%02x%02x%02x .. %02x%02x%02x%02x", start.a, start.r, start.g, start.b, - end.a, end.r, end.g, end.b); - n.build(16, pal, start, end); -/* for (int i=0; i<16; i++) - eDebugNoNewLine("%02x|%02x%02x%02x%02x ", (int)n.lookup[i], pal.data[n.lookup[i]].a, pal.data[n.lookup[i]].r, pal.data[n.lookup[i]].g, pal.data[n.lookup[i]].b); - eDebug("");*/ - return n; -} - -fontRenderClass *fontRenderClass::getInstance() -{ - return instance; -} - -FT_Error myFTC_Face_Requester(FTC_FaceID face_id, - FT_Library library, - FT_Pointer request_data, - FT_Face* aface) -{ - return ((fontRenderClass*)request_data)->FTC_Face_Requester(face_id, aface); -} - - -FT_Error fontRenderClass::FTC_Face_Requester(FTC_FaceID face_id, FT_Face* aface) -{ - fontListEntry *font=(fontListEntry *)face_id; - if (!font) - return -1; - - eDebug("[FONT] FTC_Face_Requester (%s)", font->face); - - int error; - if ((error=FT_New_Face(library, font->filename, 0, aface))) - { - eDebug(" failed: %s", strerror(error)); - return error; - } - FT_Select_Charmap(*aface, ft_encoding_unicode); - return 0; -} - -FTC_FaceID fontRenderClass::getFaceID(const char *face) -{ - for (fontListEntry *f=font; f; f=f->next) - { - if (!strcmp(f->face, face)) - return (FTC_FaceID)f; - } - return 0; -} - -FT_Error fontRenderClass::getGlyphBitmap(FTC_ImageTypeRec *font, FT_ULong glyph_index, FTC_SBit *sbit) -{ - FT_Error res=FTC_SBitCache_Lookup(sbitsCache, font, glyph_index, sbit, 0); - eDebug("%x", sizeof(**sbit)); - return res; -} - -const char* fontRenderClass::AddFont(const char *filename) -{ - eDebugNoNewLine("[FONT] adding font %s...", filename); - fflush(stdout); - int error; - fontListEntry *n=new fontListEntry; - - FT_Face face; - eLocker lock(ftlock); - - if ((error=FT_New_Face(library, filename, 0, &face))) - eFatal(" failed: %s", strerror(error)); - - strcpy(n->filename=new char[strlen(filename)+1], filename); - strcpy(n->face=new char[strlen(face->family_name)+strlen(face->style_name)+2], face->family_name); - if (face->style_name[0]!=' ') - strcat(n->face, " "); - strcat(n->face, face->style_name); - FT_Done_Face(face); - - n->next=font; - eDebug("OK (%s)", n->face); - font=n; - - return n->face; -} - -fontRenderClass::fontListEntry::~fontListEntry() -{ - delete[] filename; - delete[] face; -} - -fontRenderClass::fontRenderClass(): fb(fbClass::getInstance()) -{ - instance=this; - eDebug("[FONT] initializing lib..."); - { - if (FT_Init_FreeType(&library)) - { - eDebug("[FONT] initializing failed."); - return; - } - } - eDebug("[FONT] loading fonts..."); - fflush(stdout); - font=0; - - int maxbytes=4*1024*1024; - eDebug("[FONT] Intializing font cache, using max. %dMB...", maxbytes/1024/1024); - fflush(stdout); - { - if (FTC_Manager_New(library, 8, 8, maxbytes, myFTC_Face_Requester, this, &cacheManager)) - { - eDebug("[FONT] initializing font cache failed!"); - return; - } - if (!cacheManager) - { - eDebug("[FONT] initializing font cache manager error."); - return; - } - if (FTC_SBitCache_New(cacheManager, &sbitsCache)) - { - eDebug("[FONT] initializing font cache sbit failed!"); - return; - } -/* if (FTC_ImageCache_New(cacheManager, &imageCache)) - { - eDebug("[FONT] initializing font cache imagecache failed!"); - } */ - } - return; -} - -fontRenderClass::~fontRenderClass() -{ - ftlock.lock(); -// auskommentiert weil freetype und enigma die kritische masse des suckens ueberschreiten. -// FTC_Manager_Done(cacheManager); -// FT_Done_FreeType(library); -} - -Font *fontRenderClass::getFont(const char *face, int size, int tabwidth) -{ - FTC_FaceID id=getFaceID(face); - if (!id) - eDebug("face %s does not exist!", face); - if (!id) - return 0; - return new Font(this, id, size, tabwidth); -} - -Font::Font(fontRenderClass *render, FTC_FaceID faceid, int isize, int tw): tabwidth(tw) -{ - renderer=render; - font.font.face_id=faceid; - font.font.pix_width = isize; - font.font.pix_height = isize; - font.flags = FT_LOAD_DEFAULT; - height=isize; - if (tabwidth==-1) - tabwidth=8*isize; - ref=0; -} - -FT_Error Font::getGlyphBitmap(FT_ULong glyph_index, FTC_SBit *sbit) -{ - return renderer->getGlyphBitmap(&font, glyph_index, sbit); -} - -Font::~Font() -{ -} - -void Font::lock() -{ - ref++; -} - -void Font::unlock() -{ - ref--; - if (!ref) - delete this; -} - -int eTextPara::appendGlyph(FT_UInt glyphIndex, int flags, int rflags) -{ - FTC_SBit glyph; - if (current_font->getGlyphBitmap(glyphIndex, &glyph)) - return 1; - - int nx=cursor.x(); - - if (! (rflags & RS_RTL)) - nx+=glyph->xadvance; - else - { - eDebug("RTL: glyph->xadvance: %d", glyph->xadvance); - nx-=glyph->xadvance; - } - - if ( - (rflags&RS_WRAP) && - ( - (!(rflags & RS_RTL)) - ? - (nx >= area.right()) : - (nx < area.left()) - ) - ) - { - int cnt = 0; - glyphString::iterator i(glyphs.end()); - --i; - while (i != glyphs.begin()) - { - if (i->flags&(GS_ISSPACE|GS_ISFIRST)) - break; - cnt++; - --i; - } - if (i != glyphs.begin() && ((i->flags&(GS_ISSPACE|GS_ISFIRST))==GS_ISSPACE) && (++i != glyphs.end())) // skip space - { - int linelength=cursor.x()-i->x; - // RTL: linelength is negative - i->flags|=GS_ISFIRST; - ePoint offset=ePoint(i->x, i->y); - newLine(rflags); - offset-=cursor; - while (i != glyphs.end()) // rearrange them into the next line - { - i->x-=offset.x(); - i->y-=offset.y(); - i->bbox->moveBy(-offset.x(), -offset.y()); - ++i; - } - cursor+=ePoint(linelength, 0); // put the cursor after that line - } else - { - if (cnt) - { - newLine(rflags); - flags|=GS_ISFIRST; - } - } - } - - int xadvance=glyph->xadvance, kern=0; - - if (previous && use_kerning) - { - FT_Vector delta; - FT_Get_Kerning(current_face, previous, glyphIndex, ft_kerning_default, &delta); - kern=delta.x>>6; - } - - eRect* bbox = new eRect(); - bbox->setLeft( (flags&GS_ISFIRST|glyphs.empty()?cursor.x():cursor.x()-1) + glyph->left ); - bbox->setTop( cursor.y() - glyph->top ); - bbox->setWidth( glyph->width ); - bbox->setHeight( glyph->height ); - - pGlyph ng; - - xadvance+=kern; - - if (!(rflags & RS_RTL)) - ng.x=cursor.x()+kern; - else - ng.x=cursor.x()-xadvance; - - ng.y=cursor.y(); - ng.w=xadvance; - ng.font=current_font; - ng.font->lock(); - ng.glyph_index=glyphIndex; - ng.flags=flags; - ng.bbox=bbox; - glyphs.push_back(ng); - - if (!(rflags & RS_RTL)) - cursor+=ePoint(xadvance, 0); - else - cursor-=ePoint(xadvance, 0); - previous=glyphIndex; - return 0; -} - -void eTextPara::calc_bbox() -{ - boundBox.setLeft( 32000 ); - boundBox.setTop( 32000 ); - boundBox.setRight( -32000 ); // for each glyph image, compute its bounding box, translate it, - boundBox.setBottom( -32000 ); - // and grow the string bbox - - for ( glyphString::iterator i(glyphs.begin()); i != glyphs.end(); ++i) - { - if ( i->bbox->left() < boundBox.left() ) - boundBox.setLeft( i->bbox->left() ); - if ( i->bbox->top() < boundBox.top() ) - boundBox.setTop( i->bbox->top() ); - if ( i->bbox->right() > boundBox.right() ) - boundBox.setRight( i->bbox->right() ); - if ( i->bbox->bottom() > boundBox.bottom() ) - boundBox.setBottom( i->bbox->bottom() ); - } -// eDebug("boundBox left = %i, top = %i, right = %i, bottom = %i", boundBox.left(), boundBox.top(), boundBox.right(), boundBox.bottom() ); - bboxValid=1; -} - -void eTextPara::newLine(int flags) -{ - if (!(flags & RS_RTL)) - { - if (maximum.width()size->metrics.height-(current_face->size->metrics.ascender+current_face->size->metrics.descender); - cursor+=ePoint(0, (current_face->size->metrics.ascender+current_face->size->metrics.descender+linegap*1/2)>>6); - if (maximum.height()=0) - eFatal("verdammt man der war noch gelockt :/\n"); -} - -void eTextPara::destroy() -{ - eLocker lock(refcntlck); - - if (!refcnt--) - delete this; -} - -eTextPara *eTextPara::grab() -{ - eLocker lock(refcntlck); - - refcnt++; - return this; -} - -void eTextPara::setFont(const gFont &font) -{ - if (refcnt) - eFatal("mod. after lock"); - setFont(fontRenderClass::getInstance()->getFont(font.family.c_str(), font.pointSize)); -} - -void eTextPara::setFont(Font *fnt) -{ - if (refcnt) - eFatal("mod. after lock"); - if (!fnt) - return; - if (current_font && !current_font->ref) - delete current_font; - current_font=fnt; - eLocker lock(ftlock); - - if (FTC_Manager_Lookup_Size(fontRenderClass::instance->cacheManager, ¤t_font->font.font, ¤t_face, ¤t_font->size)<0) - { - eDebug("FTC_Manager_Lookup_Size failed!"); - return; - } - cache_current_font=¤t_font->font.font; - previous=0; - use_kerning=FT_HAS_KERNING(current_face); -} - -int eTextPara::renderString(const std::string &string, int rflags) -{ - eLocker lock(ftlock); - - if (refcnt) - eFatal("mod. after lock"); - - if (!current_font) - return -1; - - if (cursor.y()==-1) - { - if (!(rflags & RS_RTL)) - { - cursor=ePoint(area.x(), area.y()+(current_face->size->metrics.ascender>>6)); - } else - { - cursor=ePoint(area.right(), area.y()+(current_face->size->metrics.ascender>>6)); - } - left=cursor.x(); - } - - glyphs.reserve(glyphs.size()+string.length()); - - if (¤t_font->font.font != cache_current_font) - { - if (FTC_Manager_Lookup_Size(fontRenderClass::instance->cacheManager, ¤t_font->font.font, ¤t_face, ¤t_font->size)<0) - { - eDebug("FTC_Manager_Lookup_Size failed!"); - return -1; - } - cache_current_font=¤t_font->font.font; - } - - std::string::const_iterator p(string.begin()); - - while(p != string.end()) - { - int isprintable=1; - int flags=0; - - unsigned int unicode=*p++; - - if (unicode & 0x80) // we have (hopefully) UTF8 here, and we assume that the encoding is VALID - { - if ((unicode & 0xE0)==0xC0) // two bytes - { - unicode&=0x1F; - unicode<<=6; - if (p != string.end()) - unicode|=(*p++)&0x3F; - } else if ((unicode & 0xF0)==0xE0) // three bytes - { - unicode&=0x0F; - unicode<<=6; - if (p != string.end()) - unicode|=(*p++)&0x3F; - unicode<<=6; - if (p != string.end()) - unicode|=(*p++)&0x3F; - } else if ((unicode & 0xF8)==0xF0) // four bytes - { - unicode&=0x07; - unicode<<=6; - if (p != string.end()) - unicode|=(*p++)&0x3F; - unicode<<=6; - if (p != string.end()) - unicode|=(*p++)&0x3F; - unicode<<=6; - if (p != string.end()) - unicode|=(*p++)&0x3F; - } - } - - if (!(rflags&RS_DIRECT)) - { - switch (unicode) - { - case '\t': - isprintable=0; - if (!(rflags & RS_RTL)) - { - cursor+=ePoint(current_font->tabwidth, 0); - cursor-=ePoint(cursor.x()%current_font->tabwidth, 0); - } else - { - // does this work? - cursor-=ePoint(current_font->tabwidth, 0); - cursor+=ePoint(cursor.x()%current_font->tabwidth, 0); - } - break; - case 0x8A: - case 0xE08A: - case '\n': - isprintable=0; - newLine(rflags); - flags|=GS_ISFIRST; - break; - case '\r': - case 0x86: case 0xE086: - case 0x87: case 0xE087: - isprintable=0; - break; - case ' ': - flags|=GS_ISSPACE; - default: - break; - } - } - if (isprintable) - { - FT_UInt index; - - index=(rflags&RS_DIRECT)? unicode : FT_Get_Char_Index(current_face, unicode); - - if (!index) - eDebug("unicode %d ('%c') not present", unicode, unicode); - else - appendGlyph(index, flags, rflags); - } - } - bboxValid=false; - calc_bbox(); - return 0; -} - -void eTextPara::blit(gPixmapDC &dc, const ePoint &offset, const gRGB &background, const gRGB &foreground) -{ - eLocker lock(ftlock); - - if (¤t_font->font.font != cache_current_font) - { - if (FTC_Manager_Lookup_Size(fontRenderClass::instance->cacheManager, ¤t_font->font.font, ¤t_face, ¤t_font->size)<0) - { - eDebug("FTC_Manager_Lookup_Size failed!"); - return; - } - cache_current_font=¤t_font->font.font; - } - - gPixmap &target=dc.getPixmap(); - - register int opcode; - gColor *lookup8=0; - __u32 lookup32[16]; - - if (target.bpp == 8) - { - if (target.clut.data) - { - lookup8=getColor(target.clut, background, foreground).lookup; - opcode=0; - } else - opcode=1; - } else if (target.bpp == 32) - { - opcode=3; - if (target.clut.data) - { - lookup8=getColor(target.clut, background, foreground).lookup; - for (int i=0; i<16; ++i) - lookup32[i]=((target.clut.data[lookup8[i]].a<<24)| - (target.clut.data[lookup8[i]].r<<16)| - (target.clut.data[lookup8[i]].g<<8)| - (target.clut.data[lookup8[i]].b))^0xFF000000; - } else - { - for (int i=0; i<16; ++i) - lookup32[i]=(0x010101*i)|0xFF000000; - } - } else - { - eWarning("can't render to %dbpp", target.bpp); - return; - } - - eRect clip(0, 0, target.x, target.y); - clip&=dc.getClip(); - - int buffer_stride=target.stride; - - for (glyphString::iterator i(glyphs.begin()); i != glyphs.end(); ++i) - { - FTC_SBit glyph_bitmap; - memset(&glyph_bitmap, 0, sizeof(glyph_bitmap)); - if (fontRenderClass::instance->getGlyphBitmap(&i->font->font, i->glyph_index, &glyph_bitmap)) - continue; - if (!glyph_bitmap->buffer) - eFatal("you suck."); - int rx=i->x+glyph_bitmap->left + offset.x(); - int ry=i->y-glyph_bitmap->top + offset.y(); - __u8 *d=(__u8*)(target.data)+buffer_stride*ry+rx*target.bypp; - __u8 *s=glyph_bitmap->buffer; - register int sx=glyph_bitmap->width; - int sy=glyph_bitmap->height; - if ((sy+ry) >= clip.bottom()) - sy=clip.bottom()-ry; - if ((sx+rx) >= clip.right()) - sx=clip.right()-rx; - if (rx < clip.left()) - { - int diff=clip.left()-rx; - s+=diff; - sx-=diff; - rx+=diff; - d+=diff*target.bypp; - } - if (ry < clip.top()) - { - int diff=clip.top()-ry; - s+=diff*glyph_bitmap->pitch; - sy-=diff; - ry+=diff; - d+=diff*buffer_stride; - } - if (sx>0) - for (int ay=0; ay>4; - if(b) - *td++=lookup8[b]; - else - td++; - } - } else if (opcode == 1) // 8bit direct - { - register __u8 *td=d; - register int ax; - for (ax=0; ax>4; - if(b) - *td++=lookup32[b]; - else - td++; - } - } - s+=glyph_bitmap->pitch-sx; - d+=buffer_stride; - } - } -} - -void eTextPara::realign(int dir) // der code hier ist ein wenig merkwuerdig. -{ - glyphString::iterator begin(glyphs.begin()), c(glyphs.begin()), end(glyphs.begin()), last; - if (dir==dirLeft) - return; - while (c != glyphs.end()) - { - int linelength=0; - int numspaces=0, num=0; - begin=end; - - // zeilenende suchen - do { - last=end; - ++end; - } while ((end != glyphs.end()) && (!(end->flags&GS_ISFIRST))); - // end zeigt jetzt auf begin der naechsten zeile - - for (c=begin; c!=end; ++c) - { - // space am zeilenende skippen - if ((c==last) && (c->flags&GS_ISSPACE)) - continue; - - if (c->flags&GS_ISSPACE) - numspaces++; - linelength+=c->w;; - num++; - } - if (!num) // line mit nur einem space - continue; - - switch (dir) - { - case dirRight: - case dirCenter: - { - int offset=area.width()-linelength; - if (dir==dirCenter) - offset/=2; - while (begin != end) - { - begin->x+=offset; - begin->bbox->moveBy(offset,0); - ++begin; - } - break; - } - case dirBlock: - { - if (end == glyphs.end()) // letzte zeile linksbuendig lassen - continue; - int spacemode; - if (numspaces) - spacemode=1; - else - spacemode=0; - if ((!spacemode) && (num<2)) - break; - int off=(area.width()-linelength)*256/(spacemode?numspaces:(num-1)); - int curoff=0; - while (begin != end) - { - int doadd=0; - if ((!spacemode) || (begin->flags&GS_ISSPACE)) - doadd=1; - begin->x+=curoff>>8; - begin->bbox->moveBy(curoff>>8,0); - if (doadd) - curoff+=off; - ++begin; - } - break; - } - } - } - bboxValid=false; -} - -void eTextPara::clear() -{ - eLocker lock(ftlock); - - for (glyphString::iterator i(glyphs.begin()); i!=glyphs.end(); ++i) - { - i->font->unlock(); - delete i->bbox; - } - glyphs.clear(); -} - -eAutoInitP0 init_fontRenderClass(1, "Font Render Class"); diff --git a/lib/network/xmlrpc.cpp b/lib/network/xmlrpc.cpp deleted file mode 100644 index 3d981d51..00000000 --- a/lib/network/xmlrpc.cpp +++ /dev/null @@ -1,523 +0,0 @@ -#ifndef DISABLE_NETWORK - -#include -#include - - -static std::map&, ePtrList&)> rpcproc; - -void eXMLRPCVariant::zero() -{ - _struct=0; - _array=0; - _i4=0; - _boolean=0; - _string=0; - _double=0; -// _datetime=0; -// _base64=0; -} - -eXMLRPCVariant::eXMLRPCVariant(std::map *__struct) -{ - zero(); - _struct=__struct; -} - -eXMLRPCVariant::eXMLRPCVariant(std::vector *__array) -{ - zero(); - _array=__array; -} - -eXMLRPCVariant::eXMLRPCVariant(__s32 *__i4) -{ - zero(); - _i4=__i4; -} - -eXMLRPCVariant::eXMLRPCVariant(bool *__boolean) -{ - zero(); - _boolean=__boolean; -} - -eXMLRPCVariant::eXMLRPCVariant(std::string *__string) -{ - zero(); - _string=__string; -} - -eXMLRPCVariant::eXMLRPCVariant(double *__double) -{ - zero(); - _double=__double; -} - -/*eXMLRPCVariant::eXMLRPCVariant(QDateTime *__datetime) -{ - zero(); - _datetime=__datetime; -} */ - -/*eXMLRPCVariant::eXMLRPCVariant(QByteArray *__base64) -{ - zero(); - _base64=__base64; -} */ - -eXMLRPCVariant::eXMLRPCVariant(const eXMLRPCVariant &c) -{ - zero(); - if (c._i4) - _i4=new int(*c._i4); - if (c._boolean) - _boolean=new bool(*c._boolean); - if (c._string) - _string=new std::string(*c._string); - if (c._double) - _double=new double(*c._double); - // datetime, base64 - if (c._struct) - { - _struct=new std::map; - for (std::map::iterator b(c._struct->begin()); b != c._struct->end(); ++b) - _struct->insert(std::pair(b->first, new eXMLRPCVariant(*b->second))); - } - if (c._array) - _array = new std::vector(*c._array); -} - -eXMLRPCVariant::~eXMLRPCVariant() -{ - if (_struct) - { - for (std::map::iterator i(_struct->begin()); i != _struct->end(); ++i) - delete i->second; - - delete _struct; - } - if (_array) - delete _array; - if (_i4) - delete _i4; - if (_boolean) - delete _boolean; - if (_string) - delete _string; - if (_double) - delete _string; -/* if (_datetime) - delete _datetime;*/ -/* if (_base64) - delete _base64;*/ -} - -std::map *eXMLRPCVariant::getStruct() -{ - return _struct; -} - -std::vector *eXMLRPCVariant::getArray() -{ - return _array; -} - -__s32 *eXMLRPCVariant::getI4() -{ - return _i4; -} - -bool *eXMLRPCVariant::getBoolean() -{ - return _boolean; -} - -std::string *eXMLRPCVariant::getString() -{ - return _string; -} - -double *eXMLRPCVariant::getDouble() -{ - return _double; -} - -/*QDateTime *eXMLRPCVariant::getDatetime() -{ - return _datetime; -} */ - -/*QByteArray *eXMLRPCVariant::getBase64() -{ - return _base64; -} */ - -void eXMLRPCVariant::toXML(std::string &result) -{ - if (getArray()) - { - static std::string s1(""); - result+=s1; - for (unsigned int i=0; isize(); i++) - { - static std::string s(" "); - result+=s; - (*getArray())[i].toXML(result); - static std::string s1("\n"); - result+=s1; - } - static std::string s2("\n"); - result+=s2; - } else if (getStruct()) - { - static std::string s1(""); - result+=s1; - for (std::map::iterator i(_struct->begin()); i != _struct->end(); ++i) - { - static std::string s1(" "); - result+=s1; - result+=i->first; - static std::string s2(""); - result+=s2; - i->second->toXML(result); - static std::string s3("\n"); - result+=s3; - } - static std::string s2("\n"); - result+=s2; - } else if (getI4()) - { - static std::string s1(""); - result+=s1; - result+=getNum(*getI4()); - static std::string s2(""); - result+=s2; - } else if (getBoolean()) - { - static std::string s0("0"); - static std::string s1("1"); - result+=(*getBoolean())?s1:s0; - } else if (getString()) - { - static std::string s1(""); - static std::string s2(""); - result+=s1; - result+=*getString(); - result+=s2; - } else if (getDouble()) - { -// result+=std::string().sprintf("%lf", *getDouble()); -#warning double support removed - } else - eFatal("couldn't append"); -} - -static eXMLRPCVariant *fromXML(XMLTreeNode *n) -{ - if (strcmp(n->GetType(), "value")) - return 0; - n=n->GetChild(); - const char *data=n->GetData(); - if (!data) - data=""; - if ((!strcmp(n->GetType(), "i4")) || (!strcmp(n->GetType(), "int"))) - return new eXMLRPCVariant(new int(atoi(data))); - else if (!strcmp(n->GetType(), "boolean")) - return new eXMLRPCVariant(new bool(atoi(data))); - else if (!strcmp(n->GetType(), "string")) - return new eXMLRPCVariant(new std::string(data)); - else if (!strcmp(n->GetType(), "double")) - return new eXMLRPCVariant(new double(atof(data))); - else if (!strcmp(n->GetType(), "struct")) { - std::map *s=new std::map; - for (n=n->GetChild(); n; n=n->GetNext()) - { - if (strcmp(data, "member")) - { - delete s; - return 0; - } - std::string name=0; - eXMLRPCVariant *value; - for (XMLTreeNode *v=n->GetChild(); v; v=v->GetNext()) - { - if (!strcmp(v->GetType(), "name")) - name=std::string(v->GetData()); - else if (!strcmp(v->GetType(), "value")) - value=fromXML(v); - } - if ((!value) || (!name)) - { - delete s; - return 0; - } - s->INSERT(name,value); - } - return new eXMLRPCVariant(s); - } else if (!strcmp(n->GetType(), "array")) - { - ePtrList l; - #warning autodelete removed -// l.setAutoDelete(true); - n=n->GetChild(); - if (strcmp(data, "data")) - return 0; - for (n=n->GetChild(); n; n=n->GetNext()) - if (!strcmp(n->GetType(), "value")) - { - eXMLRPCVariant *value=fromXML(n); - if (!value) - return 0; - l.push_back(value); - } - - return new eXMLRPCVariant( l.getVector() ); - } - eDebug("couldn't convert %s", n->GetType()); - return 0; -} - -eXMLRPCResponse::eXMLRPCResponse(eHTTPConnection *c): - eHTTPDataSource(c), parser("ISO-8859-1") -{ - // size etc. setzen aber erst NACH data-phase - connection->localstate=eHTTPConnection::stateWait; -} - -eXMLRPCResponse::~eXMLRPCResponse() -{ -} - -int eXMLRPCResponse::doCall() -{ - eDebug("doing call"); - result=""; - // get method name - std::string methodName=0; - - if (connection->remote_header["Content-Type"]!="text/xml") - { - eDebug("remote header failure (%s != text/xml)", (connection->remote_header["Content-Type"]).c_str()); - return -3; - } - - XMLTreeNode *methodCall=parser.RootNode(); - if (!methodCall) - { - eDebug("empty xml"); - return -1; - } - if (strcmp(methodCall->GetType(), "methodCall")) - { - eDebug("no methodCall found"); - return -2; - } - - ePtrList params; -// params.setAutoDelete(true); -#warning params autodelete remove - - for (XMLTreeNode *c=methodCall->GetChild(); c; c=c->GetNext()) - { - if (!strcmp(c->GetType(), "methodName")) - methodName=std::string(c->GetData()); - else if (!strcmp(c->GetType(), "params")) - { - for (XMLTreeNode *p=c->GetChild(); p; p=p->GetNext()) - if (!strcmp(p->GetType(), "param")) - params.push_back(fromXML(p->GetChild())); - } else - { - eDebug("unknown stuff found"); - return 0; - } - } - - if (!methodName) - { - eDebug("no methodName found!"); - return -3; - } - - eDebug("methodName: %s", methodName.c_str() ); - - result="\n" - ""; - - ePtrList ret; -// ret.setAutoDelete(true); -#warning autodelete removed - - int (*proc)(std::vector&, ePtrList &)=rpcproc[methodName]; - int fault; - - std::vector* v = params.getVector(); - - if (!proc) - { - fault=1; - xmlrpc_fault(ret, -1, "called method not present"); - } else - fault=proc( *v , ret); - - delete v; - - eDebug("converting to text..."); - - if (fault) - { - result+="\n"; - ret.current()->toXML(result); - result+="\n"; - } else - { - result+="\n"; - for (ePtrList::iterator i(ret); i != ret.end(); ++i) - { - result+=""; - i->toXML(result); - result+=""; - } - result+=""; - } - result+=""; - char buffer[10]; - snprintf(buffer, 10, "%d", size=result.length()); - wptr=0; - connection->local_header["Content-Type"]="text/xml"; - connection->local_header["Content-Length"]=buffer; - connection->code=200; - connection->code_descr="OK"; - connection->localstate=eHTTPConnection::stateResponse; - return 0; -} - -int eXMLRPCResponse::doWrite(int hm) -{ - int tw=size-wptr; - if (tw>hm) - tw=hm; - if (tw<=0) - return -1; - connection->writeBlock(result.c_str()+wptr, tw); - wptr+=tw; - return size > wptr ? 1 : -1; -} - -void eXMLRPCResponse::haveData(void *data, int len) -{ - if (result) - return; - int err=0; - - if (!parser.Parse((char*)data, len, !len)) - { - char temp[len+1]; - temp[len]=0; - memcpy(temp, data, len); - eDebug("%s: %s", temp, parser.ErrorString(parser.GetErrorCode())); - err=1; - } - - if ((!err) && (!len)) - err=doCall(); - - if (err) - { - eDebug("schade: %d", err); - connection->code=400; - connection->code_descr="Bad request"; - char buffer[10]; - snprintf(buffer, 10, "%d", size=result.length()); - wptr=0; - connection->local_header["Content-Type"]="text/html"; - connection->local_header["Content-Length"]=buffer; - result.sprintf("XMLRPC error %d\n", err); - connection->localstate=eHTTPConnection::stateResponse; - } -} - -void xmlrpc_initialize(eHTTPD *httpd) -{ - httpd->addResolver(new eHTTPXMLRPCResolver); -} - -void xmlrpc_addMethod(std::string methodName, int (*proc)(std::vector&, ePtrList&)) -{ - rpcproc[methodName]=proc; -} - -void xmlrpc_fault(ePtrList &res, int faultCode, std::string faultString) -{ - std::map *s=new std::map; - s->INSERT("faultCode", new eXMLRPCVariant(new __s32(faultCode))); - s->INSERT("faultString", new eXMLRPCVariant(new std::string(faultString))); - res.push_back(new eXMLRPCVariant(s)); -} - -int xmlrpc_checkArgs(std::string args, std::vector &parm, ePtrList &res) -{ - if (parm.size() != args.length()) - { - xmlrpc_fault(res, -500, std::string().sprintf("parameter count mismatch (found %d, expected %d)", parm.size(), args.length())); - return 1; - } - - for (unsigned int i=0; i -#include -#include -#include - -#include -#include -#include - -#define INSERT(KEY,VALUE) insert(std::pair(KEY,VALUE)) - -class eXMLRPCVariant -{ - std::map *_struct; - std::vector *_array; - __s32 *_i4; - bool *_boolean; - std::string *_string; - double *_double; -// QDateTime *_datetime; -// QByteArray *_base64; - void zero(); -public: - eXMLRPCVariant(std::map *_struct); - eXMLRPCVariant(std::vector *_array); - eXMLRPCVariant(__s32 *_i4); - eXMLRPCVariant(bool *_boolean); - eXMLRPCVariant(std::string *_string); - eXMLRPCVariant(double *_double); -// eXMLRPCVariant(QDateTime *_datetime); -// eXMLRPCVariant(QByteArray *_base64); - eXMLRPCVariant(const eXMLRPCVariant &c); - ~eXMLRPCVariant(); - - std::map *getStruct(); - std::vector *getArray(); - __s32 *getI4(); - bool *getBoolean(); - std::string *getString(); - double *getDouble(); -// QDateTime *getDatetime(); -// QByteArray *getBase64(); - - void toXML(std::string &); -}; - -class eXMLRPCResponse: public eHTTPDataSource -{ - XMLTreeParser parser; - std::string result; - int size; - int wptr; - int doCall(); -public: - eXMLRPCResponse(eHTTPConnection *c); - ~eXMLRPCResponse(); - - int doWrite(int); - void haveData(void *data, int len); -}; - -void xmlrpc_initialize(eHTTPD *httpd); -void xmlrpc_addMethod(std::string methodName, int (*)(std::vector&, ePtrList&)); -void xmlrpc_fault(ePtrList &res, int faultCode, std::string faultString); -int xmlrpc_checkArgs(std::string args, std::vector&, ePtrList &res); - -class eHTTPXMLRPCResolver: public iHTTPPathResolver -{ - DECLARE_REF(eHTTPXMLRPCResolver); -public: - eHTTPXMLRPCResolver(); - eHTTPDataSource *getDataSource(std::string request, std::string path, eHTTPConnection *conn); -}; - -#endif - -#endif //DISABLE_NETWORK -- 2.30.2