本文整理汇总了C++中GetCharWidth函数的典型用法代码示例。如果您正苦于以下问题:C++ GetCharWidth函数的具体用法?C++ GetCharWidth怎么用?C++ GetCharWidth使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetCharWidth函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: str
wxSize wxListBox::DoGetBestClientSize() const
{
// find the widest string
int wLine;
int wListbox = 0;
for (unsigned int i = 0; i < m_noItems; i++)
{
wxString str(GetString(i));
GetTextExtent(str, &wLine, NULL);
if ( wLine > wListbox )
wListbox = wLine;
}
// give it some reasonable default value if there are no strings in the
// list
if ( wListbox == 0 )
wListbox = 6*GetCharWidth();
// the listbox should be slightly larger than the widest string
wListbox += 3*GetCharWidth();
// add room for the scrollbar
wListbox += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
// don't make the listbox too tall (limit height to 10 items) but don't
// make it too small neither
int hListbox = SendMessage(GetHwnd(), LB_GETITEMHEIGHT, 0, 0)*
wxMin(wxMax(m_noItems, 3), 10);
return wxSize(wListbox, hListbox);
}
示例2: StringToUTFCharList
void CText::DrawString(const std::string &text, std::vector<FontMetaChar>::iterator format,
std::vector<FontMetaChar>::iterator end,
float size, Math::Point pos, float width, int eol, Color color)
{
m_engine->SetState(ENG_RSTATE_TEXT);
float start = pos.x;
unsigned int fmtIndex = 0;
std::vector<UTF8Char> chars;
StringToUTFCharList(text, chars, format, end);
for (auto it = chars.begin(); it != chars.end(); ++it)
{
FontType font = FONT_COLOBOT;
if (format + fmtIndex != end)
font = static_cast<FontType>(*(format + fmtIndex) & FONT_MASK_FONT);
UTF8Char ch = *it;
float offset = pos.x - start;
float cw = GetCharWidth(ch, font, size, offset);
if (offset + cw > width) // exceeds the maximum width?
{
ch = TranslateSpecialChar(CHAR_SKIP_RIGHT);
cw = GetCharWidth(ch, font, size, offset);
pos.x = start + width - cw;
color = Color(1.0f, 0.0f, 0.0f);
DrawCharAndAdjustPos(ch, font, size, pos, color);
break;
}
FontHighlight hl = static_cast<FontHighlight>(format[fmtIndex] & FONT_MASK_HIGHLIGHT);
if (hl != FONT_HIGHLIGHT_NONE)
{
Math::Point charSize;
charSize.x = GetCharWidth(ch, font, size, offset);
charSize.y = GetHeight(font, size);
DrawHighlight(hl, pos, charSize);
}
DrawCharAndAdjustPos(ch, font, size, pos, color);
// increment fmtIndex for each byte in multibyte character
if ( ch.c1 != 0 )
fmtIndex++;
if ( ch.c2 != 0 )
fmtIndex++;
if ( ch.c3 != 0 )
fmtIndex++;
}
if (eol != 0)
{
FontType font = FONT_COLOBOT;
UTF8Char ch = TranslateSpecialChar(eol);
color = Color(1.0f, 0.0f, 0.0f);
DrawCharAndAdjustPos(ch, font, size, pos, color);
}
}
示例3: WindowSetCursor
void WindowSetCursor (PCONINFO con, int x, int y, bool IsKanji)
{
if (IsKanji)
ChangeCaretSize (con->hWnd, GetCCharWidth (), GetCharHeight ());
else
ChangeCaretSize (con->hWnd, GetCharWidth (), GetCharHeight ());
SetCaretPos (con->hWnd, x * GetCharWidth (), y * GetCharHeight ());
}
示例4: FPDFText_ProcessInterObj
int FPDFText_ProcessInterObj(const CPDF_TextObject* pPrevObj, const CPDF_TextObject* pObj)
{
if(FPDFText_IsSameTextObject(pPrevObj, pObj)) {
return -1;
}
CPDF_TextObjectItem item;
int nItem = pPrevObj->CountItems();
pPrevObj->GetItemInfo(nItem - 1, &item);
FX_WCHAR preChar = 0, curChar = 0;
CFX_WideString wstr = pPrevObj->GetFont()->UnicodeFromCharCode(item.m_CharCode);
if(wstr.GetLength()) {
preChar = wstr.GetAt(0);
}
FX_FLOAT last_pos = item.m_OriginX;
int nLastWidth = GetCharWidth(item.m_CharCode, pPrevObj->GetFont());
FX_FLOAT last_width = nLastWidth * pPrevObj->GetFontSize() / 1000;
last_width = FXSYS_fabs(last_width);
pObj->GetItemInfo(0, &item);
wstr = pObj->GetFont()->UnicodeFromCharCode(item.m_CharCode);
if(wstr.GetLength()) {
curChar = wstr.GetAt(0);
}
int nThisWidth = GetCharWidth(item.m_CharCode, pObj->GetFont());
FX_FLOAT this_width = nThisWidth * pObj->GetFontSize() / 1000;
this_width = FXSYS_fabs(this_width);
FX_FLOAT threshold = last_width > this_width ? last_width / 4 : this_width / 4;
CFX_AffineMatrix prev_matrix, prev_reverse;
pPrevObj->GetTextMatrix(&prev_matrix);
prev_reverse.SetReverse(prev_matrix);
FX_FLOAT x = pObj->GetPosX(), y = pObj->GetPosY();
prev_reverse.Transform(x, y);
if (FXSYS_fabs(y) > threshold * 2) {
return 2;
}
threshold = (FX_FLOAT)(nLastWidth > nThisWidth ? nLastWidth : nThisWidth);
threshold = threshold > 400 ? (threshold < 700 ? threshold / 4 : threshold / 5) : (threshold / 2);
threshold *= nLastWidth > nThisWidth ? FXSYS_fabs(pPrevObj->GetFontSize()) : FXSYS_fabs(pObj->GetFontSize());
threshold /= 1000;
if (FXSYS_fabs(last_pos + last_width - x) > threshold && curChar != L' ' && preChar != L' ')
if(curChar != L' ' && preChar != L' ') {
if((x - last_pos - last_width) > threshold || (last_pos - x - last_width) > threshold) {
return 1;
}
if(x < 0 && (last_pos - x - last_width) > threshold) {
return 1;
}
if((x - last_pos - last_width) > this_width || (x - last_pos - this_width) > last_width ) {
return 1;
}
}
if(last_pos + last_width > x + this_width && curChar == L' ') {
return 3;
}
return 0;
}
示例5: GetNumCols
RECT CBitmapFont::CalculateRect(int id)
{
RECT rCell;
rCell.left = (id % GetNumCols()) * GetCharWidth();
rCell.top = (id / GetNumCols()) * GetCharHeight();
rCell.right = rCell.left + GetCharWidth();
rCell.bottom = rCell.top + GetCharHeight();
return rCell;
}
示例6: GetCharWidth
wxSize wxRadioBox::GetMaxButtonSize() const
{
// We use GetCheckBox() because there is no dedicated GetRadioBox() method
// in wxRendererNative, but check and radio boxes are usually of the same
// size anyhow. We also add half a character of width to account for the
// extra space after the radio box itself.
const int radioWidth =
wxRendererNative::Get().GetCheckBoxSize(
reinterpret_cast<wxWindow*>(const_cast<wxRadioBox*>(this))).x
+ GetCharWidth() / 2;
// calculate the max button size
int widthMax = 0,
heightMax = 0;
const unsigned int count = GetCount();
for ( unsigned int i = 0 ; i < count; i++ )
{
int width, height;
GetTextExtent(wxGetWindowText((*m_radioButtons)[i]), &width, &height);
// adjust the size to take into account the radio box itself
width += radioWidth;
height *= 3;
height /= 2;
if ( widthMax < width )
widthMax = width;
if ( heightMax < height )
heightMax = height;
}
return wxSize(widthMax, heightMax);
}
示例7: SetExtraStyle
PathProp::PathProp( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos,
const wxSize& size, long style )
{
m_opList = NULL;
m_nSelected = 0;
m_pEnroutePoint = NULL;
m_bStartNow = false;
m_pPath = NULL;
m_pEnroutePoint = NULL;
m_bStartNow = false;
#ifdef __WXOSX__
style |= wxSTAY_ON_TOP;
#endif
SetExtraStyle( GetExtraStyle() | wxWS_EX_BLOCK_EVENTS );
wxDialog::Create( parent, id, caption, pos, size, style );
wxFont *qFont = OCPNGetFont(_("Dialog"), 0);
SetFont( *qFont );
CreateControls();
// Make an estimate of the dialog size, without scrollbars showing
wxSize esize;
esize.x = GetCharWidth() * 110;
esize.y = GetCharHeight() * 40;
SetSize( esize );
Centre();
}
示例8: GetCharWidth
void AISTargetListDialog::RecalculateSize()
{
if(g_bresponsive){
// Make an estimate of the dialog size
wxSize esize;
esize.x = GetCharWidth() * 110;
esize.y = GetCharHeight() * 40;
wxSize dsize = gFrame->GetClientSize();
esize.y = wxMin(esize.y, dsize.y - (4 * GetCharHeight()));
esize.x = wxMin(esize.x, dsize.x - (2 * GetCharHeight()));
SetClientSize(esize);
wxSize fsize = GetSize();
fsize.y = wxMin(fsize.y, dsize.y - (2 * GetCharHeight()));
fsize.x = wxMin(fsize.x, dsize.x - (2 * GetCharHeight()));
SetSize(fsize);
if( m_pAuiManager ){
wxAuiPaneInfo &pane = m_pAuiManager->GetPane(_T("AISTargetList"));
if(pane.IsOk()){
pane.FloatingSize(fsize.x, fsize.y);
wxPoint pos = gFrame->GetScreenPosition();
pane.FloatingPosition(pos.x + (dsize.x - fsize.x)/2, pos.y + (dsize.y - fsize.y)/2);
}
m_pAuiManager->Update();
}
}
}
示例9: GetLabel
wxSize wxRadioButton::DoGetBestSize() const
{
static int s_radioSize = 0;
if ( !s_radioSize )
{
wxScreenDC dc;
dc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
s_radioSize = dc.GetCharHeight();
}
wxString str = GetLabel();
int wRadio, hRadio;
if ( !str.empty() )
{
GetTextExtent(GetLabelText(str), &wRadio, &hRadio);
wRadio += s_radioSize + GetCharWidth();
if ( hRadio < s_radioSize )
hRadio = s_radioSize;
}
else
{
wRadio = s_radioSize;
hRadio = s_radioSize;
}
wxSize best(wRadio, hRadio);
CacheBestSize(best);
return best;
}
示例10: zGetCharWidth
BOOL far pascal zGetCharWidth( HDC pp1, UINT pp2, UINT pp3, LPINT pp4 )
{
BOOL r;
SaveRegs();
/*
** Log IN Parameters (No Create/Destroy Checking Yet!)
*/
LogIn( (LPSTR)"APICALL:GetCharWidth HDC+UINT+UINT++",
pp1, pp2, pp3, (short)0 );
/*
** Call the API!
*/
RestoreRegs();
GrovelDS();
r = GetCharWidth(pp1,pp2,pp3,pp4);
UnGrovelDS();
SaveRegs();
/*
** Log Return Code & OUT Parameters (No Create/Destroy Checking Yet!)
*/
LogOut( (LPSTR)"APIRET:GetCharWidth BOOL++++ARRAYINT+",
r, (short)0, (short)0, (short)0, pp4, 1 + pp3 - pp2 );
RestoreRegs();
return( r );
}
示例11: GetCount
wxSize wxChoice::DoGetBestSize() const
{
// find the widest string
int wChoice = 0;
const unsigned int nItems = GetCount();
for ( unsigned int i = 0; i < nItems; i++ )
{
int wLine;
GetTextExtent(GetString(i), &wLine, NULL);
if ( wLine > wChoice )
wChoice = wLine;
}
// give it some reasonable default value if there are no strings in the
// list
if ( wChoice == 0 )
wChoice = 100;
// the combobox should be slightly larger than the widest string
wChoice += 5*GetCharWidth();
wxSize best(wChoice, EDIT_HEIGHT_FROM_CHAR_HEIGHT(GetCharHeight()));
CacheBestSize(best);
return best;
}
示例12: _InsertWidthArray
static void _InsertWidthArray(HDC hDC,
int start,
int end,
CPDF_Array* pWidthArray) {
int size = end - start + 1;
int* widths = FX_Alloc(int, size);
GetCharWidth(hDC, start, end, widths);
int i;
for (i = 1; i < size; i++)
if (widths[i] != *widths) {
break;
}
if (i == size) {
int first = pWidthArray->GetInteger(pWidthArray->GetCount() - 1);
pWidthArray->AddInteger(first + size - 1);
pWidthArray->AddInteger(*widths);
} else {
CPDF_Array* pWidthArray1 = new CPDF_Array;
pWidthArray->Add(pWidthArray1);
for (i = 0; i < size; i++) {
pWidthArray1->AddInteger(widths[i]);
}
}
FX_Free(widths);
}
示例13: assert
int CText::Detect(const std::string &text, FontType font, float size, float offset)
{
assert(font != FONT_BUTTON);
float pos = 0.0f;
unsigned int index = 0;
while (index < text.length())
{
UTF8Char ch;
int len = StrUtils::Utf8CharSizeAt(text, index);
if (len >= 1)
ch.c1 = text[index];
if (len >= 2)
ch.c2 = text[index+1];
if (len >= 3)
ch.c3 = text[index+2];
index += len;
if (ch.c1 == '\n')
return index;
float width = GetCharWidth(ch, font, size, pos);
if (offset <= pos + width/2.0f)
return index;
pos += width;
}
return index;
}
示例14: GetTextExtent
wxSize wxListBox::DoGetBestClientSize() const
{
wxCoord width = 0,
height = 0;
size_t count = m_strings->GetCount();
for ( size_t n = 0; n < count; n++ )
{
wxCoord w,h;
GetTextExtent(this->GetString(n), &w, &h);
if ( w > width )
width = w;
if ( h > height )
height = h;
}
// if the listbox is empty, still give it some non zero (even if
// arbitrary) size - otherwise, leave small margin around the strings
if ( !width )
width = 100;
else
width += 3*GetCharWidth();
if ( !height )
height = GetCharHeight();
// we need the height of the entire listbox, not just of one line
height *= wxMax(count, 7);
return wxSize(width, height);
}
示例15: GetCharWidth
wxSize wxRadioBox::GetTotalButtonSize( const wxSize& rSizeBtn ) const
{
int nCx1;
int nCy1;
int nHeight;
int nWidth;
int nWidthLabel = 0;
nCx1 = GetCharWidth();
nCy1 = GetCharHeight();
nHeight = GetRowCount() * rSizeBtn.y + (2 * nCy1);
nWidth = GetColumnCount() * (rSizeBtn.x + nCx1) + nCx1;
//
// And also wide enough for its label
//
wxString sStr = wxGetWindowText(GetHwnd());
if (!sStr.empty())
{
GetTextExtent( sStr
,&nWidthLabel
,NULL
);
nWidthLabel += 2*nCx1;
}
if (nWidthLabel > nWidth)
nWidth = nWidthLabel;
wxSize total( nWidth, nHeight );
return total;
} // end of wxRadioBox::GetTotalButtonSize