static int DrwText(Engine *engine, GpReal x0, GpReal y0, const char *text) { XEngine *xeng = (XEngine *)engine; p_win *w = xeng->w; GpXYMap *map = &xeng->e.map; int ix, iy, len, xbox[2], ybox[2], xn, xx, yn, yx; const char *txt; char *caret= "^"; if (!w || !xeng->mapped) return 1; chk_clipping(xeng); current_fsize = (int)((xeng->dpi/ONE_INCH)*gistA.t.height); if (current_fsize<4) current_fsize = 4; /* totally illegible */ if (current_fsize>180) current_fsize = 180; /* way too big */ current_fsym = T_SYMBOL | (gistA.t.font&3); current_scr = xeng->s; current_win = w; /* get current window */ xn = (int)(gistT.window.xmin*map->x.scale + map->x.offset); xx = (int)(gistT.window.xmax*map->x.scale + map->x.offset); yn = (int)(gistT.window.ymin*map->y.scale + map->y.offset); yx = (int)(gistT.window.ymax*map->y.scale + map->y.offset); if (yn > yx) { int tmp=yn ; yn=yx; yx=tmp ; } /* handle multi-line strings */ len = GxJustifyText(map, x0, y0, text, &ix, &iy, xbox, ybox); if (len < 0) return 0; /* consider whether string is completely clipped */ if (ybox[0]>yx || ybox[1]<yn || xbox[0]>xx || xbox[1]<xn) return 0; /* erase background if string is opaque */ if (gistA.t.opaque) { p_color(w, P_BG); p_rect(w, xbox[0], ybox[0], xbox[1], ybox[1], 0); } p_color(w, gistA.t.color); do { if (len>0) { if (len==1 && (current_state&4) && text[0]==']') txt = caret; else txt = text; p_text(w, ix, iy, txt, len); } len = GxJustifyNext(&text, &ix, &iy); } while (len>=0); xeng->e.marked = 1; return 0; }
void Button::setText(const sf::String& text) { if (!p_mText) { std::unique_ptr<sf::Text> p_text(new sf::Text()); p_text->setFont(mFonts.get(Fonts::Chinese)); p_text->setColor(mTextColor); //p_text->setCharacterSize(30); p_mText = std::move(p_text); } p_mText->setString(text); Graphics::centerOrigin(*p_mText); }
Button::Button(ButtonStyle style, const FontHolder& fonts, const TextureHolder& textures) : mStyle(style), mFonts(fonts), mTextures(textures), mIsFocusable(true), mIsFixedSize(true), mCallback(), p_mShape(nullptr), p_mSprite(nullptr), p_mText(nullptr), mColor(COLOR_ON_RELEASED), mTextColor(TEXT_COLOR_DEFAULT), mScale(1.f, 1.f), mState(State::OnReleased) { if (mStyle == Button::Sprite) { std::unique_ptr<sf::Sprite> p_sprite(new sf::Sprite()); p_sprite->setTexture(textures.get(Textures::Button)); Graphics::centerOrigin(*p_sprite); p_mSprite = std::move(p_sprite); setText(""); } else { std::unique_ptr<sf::RectangleShape> p_rect( new sf::RectangleShape(sf::Vector2f(BUTTON_WIDTH, BUTTON_HEIGHT))); Graphics::centerOrigin(*p_rect); p_mShape = std::move(p_rect); if (mStyle == ButtonStyle::Text) { std::unique_ptr<sf::Text> p_text(new sf::Text()); p_text->setFont(fonts.get(Fonts::Chinese)); //p_text->setCharacterSize(30); p_text->setColor(mTextColor); p_text->setString("Button"); Graphics::centerOrigin(*p_text); p_mShape->setFillColor(TEXT_BG_COLOR_RELEASED); p_mShape->setOutlineThickness(OUT_LINE_THICKNESS); p_mShape->setOutlineColor(mTextColor); p_mText = std::move(p_text); } setText(""); } }
quint32 AbrStructParser::parseEntry(QDataStream &buf){ quint32 nlen; buf >> nlen; if (nlen == 0){ nlen = 4; } QString value = ""; if (nlen == MAGIC_OBJC_LENGTH){ value = p_objc(buf); qDebug() << ABR_PRESET_START << ABR_OBJECT << value; // start to create the preset here m_translator.addEntry(ABR_PRESET_START, ABR_OBJECT, value); }else{ // read char with nlen bytes and convert to String char * name = new char[ nlen+1 ]; int status = buf.readRawData(name, nlen); if (status == -1){ qDebug() << "Error, name can't be readed"; } name[nlen] = '\0'; char * type = new char[5]; status = buf.readRawData(type, 4); type[4] = '\0'; QString key = QString::fromLatin1(type); if (m_types.contains(key)) { enumFuncNames enumName = m_types[key]; switch (enumName){ case P_PATT: value = p_patt(buf); break; case P_DESC: value = p_desc(buf); break; case P_VLLS: value = p_vlls(buf); break; case P_TEXT: value = p_text(buf); break; case P_OBJC: value = p_objc(buf); break; case P_UNTF: value = p_untf(buf); break; case P_BOOL: value = p_bool(buf); break; case P_LONG: value = p_long(buf); break; case P_DOUB: value = p_doub(buf); break; case P_ENUM: value = p_enum(buf); break; case P_TDTA: value = p_tdta(buf); break; default: qDebug() << "Freak error occurred!"; break; } QString attributeName = QString::fromLatin1(name); //qDebug() << attributeName << key << value; m_translator.addEntry(attributeName, key, value); // airbrush is the last parsed attribute of the preset if (attributeName == ABR_AIRBRUSH) { m_translator.finishPreset(); qDebug() << m_translator.toString(); } }else { qDebug() << "Unknown key:\t" << name << type; //qDebug() << p_unkn(buf); return -1; } } return 0; }