fixed shadow option bug
This commit is contained in:
parent
1136a8688a
commit
1586e9a256
1 changed files with 35 additions and 6 deletions
|
@ -19,7 +19,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
//$Id: Font.cc,v 1.5 2003/11/28 23:27:29 fluxgen Exp $
|
//$Id: Font.cc,v 1.6 2003/12/01 19:57:01 fluxgen Exp $
|
||||||
|
|
||||||
|
|
||||||
#include "Font.hh"
|
#include "Font.hh"
|
||||||
|
@ -140,17 +140,46 @@ void Font::setAntialias(bool flag) {
|
||||||
bool Font::load(const std::string &name) {
|
bool Font::load(const std::string &name) {
|
||||||
if (name.size() == 0)
|
if (name.size() == 0)
|
||||||
return false;
|
return false;
|
||||||
|
// copy name so we can manipulate it
|
||||||
|
std::string new_name = name;
|
||||||
|
|
||||||
// find font option "shadow"
|
|
||||||
m_shadow = false;
|
m_shadow = false;
|
||||||
size_t start_pos = name.find_first_of(":");
|
|
||||||
if (start_pos != std::string::npos) {
|
// find font option "shadow"
|
||||||
if (name.find_first_of("shadow", start_pos) != std::string::npos)
|
size_t start_pos = new_name.find_first_of(':');
|
||||||
|
if (start_pos != std::string::npos) {
|
||||||
|
size_t shadow_pos = new_name.find("shadow", start_pos);
|
||||||
|
if (shadow_pos != std::string::npos) {
|
||||||
m_shadow = true;
|
m_shadow = true;
|
||||||
|
// erase "shadow" since it's not a valid option for the font
|
||||||
|
new_name.erase(shadow_pos, 6);
|
||||||
|
|
||||||
|
// is the option row empty?
|
||||||
|
if (new_name.find_first_not_of("\t ,", start_pos + 1) == std::string::npos)
|
||||||
|
new_name.erase(start_pos); // erase the ':' and the rest of the line
|
||||||
|
else {
|
||||||
|
// there might be some options left so we need to remove the ","
|
||||||
|
// before/after "shadow" option
|
||||||
|
size_t pos = new_name.find_last_not_of("\t ", shadow_pos);
|
||||||
|
if (pos != std::string::npos) {
|
||||||
|
if (new_name[pos] == ',')
|
||||||
|
new_name.erase(pos, 1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ok, we removed the "," and "shadow" now we need to determine
|
||||||
|
// if we need to remove the ":" , so we search for anything except
|
||||||
|
// \t and space and if we dont find anything the ":" is removed
|
||||||
|
if (new_name.find_first_not_of("\t ", start_pos + 1) == std::string::npos)
|
||||||
|
new_name.erase(start_pos, 1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_fontstr = name;
|
m_fontstr = name;
|
||||||
return m_fontimp->load(name.c_str());
|
return m_fontimp->load(new_name.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int Font::textWidth(const char * const text, unsigned int size) const {
|
unsigned int Font::textWidth(const char * const text, unsigned int size) const {
|
||||||
|
|
Loading…
Reference in a new issue