Mygui中文换行问题(一)

2014-11-24 09:03:06 · 作者: · 浏览: 0

相信大家解决了中文输入后一定会遇到如何解决中文输入的问题,中文输入换行问题是很多gui框架都存在的一个问题,这里不废话了,大家打开mygui的引擎层中的widget的textview 的头文件和源文件将其替换为:

[cpp]
/*!
@file
@author Albert Semenov
@date 09/2009
*/
#ifndef __MYGUI_TEXT_VIEW_DATA_H__
#define __MYGUI_TEXT_VIEW_DATA_H__

#include "MyGUI_Prerequest.h"

namespace MyGUI
{

class CharInfo
{
public:
CharInfo() :
mIsColour(false)
{
mMetrics.mWidth = 0.0f;
mMetrics.mHeight = 0.0f;
mMetrics.mAdvance = 0.0f;
mMetrics.mBearingX = 0.0f;
mMetrics.mBearingY = 0.0f;
}

CharInfo(
const FloatRect& _rect,
float _width,
float _height,
float _advance,
float _bearingX,
float _bearingY) :
mIsColour(false),
mUVRect(_rect)
{ www.2cto.com
mMetrics.mWidth = _width;
mMetrics.mHeight = _height;
mMetrics.mAdvance = _advance;
mMetrics.mBearingX = _bearingX;
mMetrics.mBearingY = _bearingY;
}

CharInfo(uint32 _colour) :
mIsColour(true),
mColour(_colour)
{ }

bool isColour() const
{
return mIsColour;
}

float getWidth() const
{
return mMetrics.mWidth;
}

float getHeight() const
{
return mMetrics.mHeight;
}

float getAdvance() const
{
return mMetrics.mAdvance;
}

float getBearingX() const
{
return mMetrics.mBearingX;
}

float getBearingY() const
{
return mMetrics.mBearingY;
}

const FloatRect& getUVRect() const
{
return mUVRect;
}

uint32 getColour() const
{
return mColour;
}


private:

bool mIsColour;
FloatRect mUVRect;

struct Metrics
{
float mWidth;
float mHeight;
float mAdvance;
float mBearingX;
float mBearingY;
};

union
{
Metrics mMetrics;
uint32 mColour;
};

};

typedef std::vector VectorCharInfo;

//struct LineInfo
//{
// LineInfo() :
// width(0),
// offset(0),
// count(0)
// {
// }

// void clear()
// {
// width = 0;
// count = 0;
// simbols.clear();
// offset = 0;
// }

// int width;
// int offset;
// size_t count;
// VectorCharInfo simbols;
//};

struct LineInfo
{
LineInfo() :
width(0),
offset(0),
count(0),
offcount(0)
{
}

void clear()
{
offcount = 0;
width = 0;
count = 0;
simbols.clear();
offset = 0;
}

int offcount;
int width;
int offset;
size_t count;
VectorCharInfo simbols;
};

typedef std::vector VectorLineInfo;

} // namespace MyGUI

#endif // __MYGUI_TEXT_VIEW_DATA_H__

上面是头文件,下面是源文件:
[cpp] view plaincopy
/*!
@file
@author Albert Semenov
@date 09/2010
*/
/*
Thi