本文整理汇总了C++中NIBLSCALE函数的典型用法代码示例。如果您正苦于以下问题:C++ NIBLSCALE函数的具体用法?C++ NIBLSCALE怎么用?C++ NIBLSCALE使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NIBLSCALE函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: LatLon2Screen
void MapWindow::DrawTeammate(HDC hdc, RECT rc)
{
POINT point;
if (TeammateCodeValid)
{
if(PointVisible(TeammateLongitude, TeammateLatitude) )
{
LatLon2Screen(TeammateLongitude, TeammateLatitude, point);
SelectObject(hDCTemp,hBmpTeammatePosition);
DrawBitmapX(hdc,
point.x-NIBLSCALE(10),
point.y-NIBLSCALE(10),
20,20,
hDCTemp,0,0,SRCPAINT,true);
DrawBitmapX(hdc,
point.x-NIBLSCALE(10),
point.y-NIBLSCALE(10),
20,20,
hDCTemp,20,0,SRCAND,true);
}
}
}
开发者ID:Acrobot,项目名称:LK8000,代码行数:25,代码来源:DrawTeamMate.cpp
示例2: _DrawLine
void MapWindow::DrawHeadUpLine(HDC hdc, POINT Orig, RECT rc, double fMin, double fMax ) {
COLORREF rgbCol = RGB_BLACK;
POINT p1, p2;
double tmp = fMax*zoom.ResScaleOverDistanceModify();
double trackbearing = DisplayAircraftAngle+ (DerivedDrawInfo.Heading-DrawInfo.TrackBearing);
p2.y= Orig.y - (int)(tmp*fastcosine(trackbearing));
p2.x= Orig.x + (int)(tmp*fastsine(trackbearing));
p1.y= Orig.y;
p1.x= Orig.x;
if (BlackScreen)
rgbCol = RGB_INVDRAW;
ForcedClipping=true;
// Reduce the rectangle for a better effect
rc.top+=NIBLSCALE(5);
rc.right-=NIBLSCALE(5);
rc.bottom-=NIBLSCALE(5);
rc.left+=NIBLSCALE(5);
_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p1, p2, rgbCol, rc);
ForcedClipping=false;
}
开发者ID:IvanSantanna,项目名称:LK8000,代码行数:26,代码来源:TopView.cpp
示例3: _DrawLine
void MapWindow::DrawCrossHairs(HDC hdc, const POINT Orig,
const RECT rc)
{
POINT o1, o2;
o1.x = Orig.x+NIBLSCALE(20);
o2.x = Orig.x-NIBLSCALE(20);
o1.y = Orig.y;
o2.y = Orig.y;
if (BlackScreen)
_DrawLine(hdc, PS_SOLID, 1, o1, o2, RGB_INVDRAW, rc);
else
_DrawLine(hdc, PS_SOLID, 1, o1, o2, RGB_DARKGREY, rc);
SetPixel(hdc,o1.x,o1.y,RGB_YELLOW);
SetPixel(hdc,o2.x,o2.y,RGB_YELLOW);
o1.x = Orig.x;
o2.x = Orig.x;
o1.y = Orig.y+NIBLSCALE(20);
o2.y = Orig.y-NIBLSCALE(20);
if (BlackScreen)
_DrawLine(hdc, PS_SOLID, 1, o1, o2, RGB_INVDRAW, rc); // 091219
else
_DrawLine(hdc, PS_SOLID, 1, o1, o2, RGB_DARKGREY, rc); // 091219
SetPixel(hdc,o1.x,o1.y,RGB_YELLOW);
SetPixel(hdc,o2.x,o2.y,RGB_YELLOW);
}
开发者ID:Acrobot,项目名称:LK8000,代码行数:33,代码来源:DrawCross.cpp
示例4: CalculateOrientationTargetPan
void MapWindow::CalculateOrigin(const RECT rc, POINT *Orig) {
if (mode.Is(Mode::MODE_PAN)) {
// North up
DisplayAngle = 0.0;
DisplayAircraftAngle = DrawInfo.TrackBearing;
GliderCenter = true;
} else {
if (mode.Is(Mode::MODE_TARGET_PAN)) {
CalculateOrientationTargetPan();
} else {
CalculateOrientationNormal();
}
}
if(mode.Is(Mode::MODE_TARGET_PAN)) {
if (ScreenLandscape) {
Orig->x = (rc.left + rc.right - targetPanSize)/2;
Orig->y = (rc.bottom + rc.top)/2;
}
else {
Orig->x = (rc.left + rc.right)/2;
Orig->y = (rc.bottom + rc.top + targetPanSize)/2;
}
}
else if(mode.Is(Mode::MODE_PAN) || mode.Is(Mode::MODE_CIRCLING)) {
Orig->x = (rc.left + rc.right)/2;
Orig->y = (rc.bottom + rc.top)/2;
} else {
// automagic northup smart
if (DisplayOrientation == NORTHSMART) {
double trackbearing = DrawInfo.TrackBearing;
int middleXY,spanxy;
if (ScreenLandscape) {
middleXY=((rc.bottom-BottomSize)+rc.top)/2;
spanxy=NIBLSCALE(50);
Orig->y= middleXY + (int)(spanxy*fastcosine(trackbearing));
// This was moving too much the map!
// spanx=NIBLSCALE(40);
// Orig->x= middleX - (int)(spanx*fastsine(trackbearing));
Orig->x = (rc.left + rc.right)/2;
} else {
middleXY=(rc.left+rc.right)/2;
spanxy=NIBLSCALE(50);
Orig->x= middleXY - (int)(spanxy*fastsine(trackbearing));
Orig->y = ((rc.bottom-BottomSize) + rc.top)/2;
}
} else {
// 100924 if we are in north up autorient, position the glider in middle screen
if ((zoom.Scale()*1.4) >= AutoOrientScale) {
Orig->x = (rc.left + rc.right)/2;
Orig->y=((rc.bottom-BottomSize)+rc.top)/2;
} else {
// else do it normally using configuration
Orig->x = ((rc.right - rc.left )*GliderScreenPositionX/100)+rc.left;
Orig->y = ((rc.top - rc.bottom )*GliderScreenPositionY/100)+rc.bottom;
}
}
}
}
开发者ID:Acrobot,项目名称:LK8000,代码行数:60,代码来源:OrigAndOrient.cpp
示例5: NIBLSCALE
void MapWindow::DrawTeammate(LKSurface& Surface, const RECT& rc, const ScreenProjection& _Proj) {
if (TeammateCodeValid) {
if (PointVisible(TeammateLongitude, TeammateLatitude)) {
const POINT point = _Proj.LonLat2Screen(TeammateLongitude, TeammateLatitude);
hBmpTeammatePosition.Draw(Surface, point.x - NIBLSCALE(10), point.y - NIBLSCALE(10), IBLSCALE(20), IBLSCALE(20));
}
}
}
开发者ID:PhilColbert,项目名称:LK8000,代码行数:8,代码来源:DrawTeamMate.cpp
示例6: NIBLSCALE
void MapWindow::DrawHeadUpLine(LKSurface& Surface, const POINT& Orig, const RECT& rc, double fMin, double fMax ) {
const double tmp = fMax*zoom.ResScaleOverDistanceModify();
const double trackbearing = DisplayAircraftAngle+ (DerivedDrawInfo.Heading-DrawInfo.TrackBearing);
const POINT p2 = { Orig.x + (int)(tmp*fastsine(trackbearing)), Orig.y - (int)(tmp*fastcosine(trackbearing)) };
const LKColor rgbCol = BlackScreen?RGB_INVDRAW:RGB_BLACK;
// Reduce the rectangle for a better effect
const RECT ClipRect = {rc.left+NIBLSCALE(5), rc.top+NIBLSCALE(5), rc.right-NIBLSCALE(5), rc.bottom-NIBLSCALE(5) };
Surface.DrawLine(PEN_SOLID, NIBLSCALE(1), Orig, p2, rgbCol, ClipRect);
}
开发者ID:brunotl,项目名称:LK8000,代码行数:13,代码来源:TopView.cpp
示例7: assert
void MapWindow::DrawBitmapIn(LKSurface& Surface, const POINT &sc, const LKIcon& Icon, const bool autostretch) {
if (!Icon) return; // don't draw Bitmap if no bitmap
if (!PointVisible(sc)) return;
assert(Icon.GetSize().cx == 10);
assert(Icon.GetSize().cy == 10);
if (autostretch) {
Icon.Draw(Surface, sc.x - NIBLSCALE(5), sc.y - NIBLSCALE(5), IBLSCALE(10), IBLSCALE(10));
} else {
Icon.Draw(Surface, sc.x - NIBLSCALE(5), sc.y - NIBLSCALE(5), 10, 10);
}
}
开发者ID:jaaaaf,项目名称:LK8000,代码行数:13,代码来源:Draw_Primitives.cpp
示例8: SelectObject
void MapWindow::DrawBitmapIn(const HDC hdc, const POINT &sc, const HBITMAP h, const bool autostretch) {
if (!PointVisible(sc)) return;
SelectObject(hDCTemp, h);
DrawBitmapX(hdc,
sc.x-NIBLSCALE(5),
sc.y-NIBLSCALE(5),
10,10,
hDCTemp,0,0,SRCPAINT, autostretch);
DrawBitmapX(hdc,
sc.x-NIBLSCALE(5),
sc.y-NIBLSCALE(5),
10,10,
hDCTemp,10,0,SRCAND, autostretch);
}
开发者ID:Mazuk,项目名称:LK8000,代码行数:16,代码来源:Draw_Primitives.cpp
示例9: DrawTelescope
void DrawTelescope(HDC hdc, double fAngle, int x, int y)
{
POINT Telescope[17] = {
{ 6 , 7 }, // 1
{ 6 , 2 }, // 2
{ 8 , -2 }, // 3
{ 8 , -7 }, // 4
{ 1 , -7 }, // 5
{ 1 , -2 }, // 6
{ -1 , -2 }, // 7
{ -1 , -7 }, // 8
{ -8 , -7 }, // 9
{ -8 , -2 }, // 10
{ -6 , 2 }, // 11
{ -6 , 7 }, // 12
{ -1 , 7 }, // 13
{ -1 , 3 }, // 14
{ 1 , 3 }, // 15
{ 1 , 7 }, // 16
{ 4 , 7 } // 17
};
bool bBlack = true;
DrawWindRoseDirection( hdc, AngleLimit360( fAngle ), x, y + NIBLSCALE(18));
PolygonRotateShift(Telescope, 17, x, y, AngleLimit360( fAngle ));
LKPen oldBPen ;
LKBrush oldBrush ;
if (!bBlack)
{
oldBPen = Surface.SelectObject(LK_WHITE_PEN));
oldBrush = Surface.SelectObject(LKBrush_White);
}
开发者ID:PhilColbert,项目名称:LK8000,代码行数:35,代码来源:Unused.cpp
示例10: VDrawLine
void VDrawLine(const HDC&hdc, const RECT rc, int x1, int y1, int x2, int y2, COLORREF col) {
POINT p0,p1;
p0.x = x1;
p0.y = y1;
p1.x = x2;
p1.y = y2;
MapWindow::_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p0, p1, col, rc);
}
开发者ID:IvanSantanna,项目名称:LK8000,代码行数:8,代码来源:LKDrawInfoPage.cpp
示例11: DrawLKStatus
// LK Status message
void MapWindow::DrawLKStatus(HDC hdc, RECT rc) {
TextInBoxMode_t TextDisplayMode = {0};
TCHAR Buffer[LKSIZEBUFFERLARGE];
short bottomlines;
short middlex=(rc.right-rc.left)/2;
short left=rc.left+NIBLSCALE(5);
short contenttop=rc.top+NIBLSCALE(50);
TextDisplayMode.Color = RGB_BLACK;
TextDisplayMode.NoSetFont = 1;
//TextDisplayMode.AlligneRight = 0;
TextDisplayMode.AlligneCenter = 1;
TextDisplayMode.WhiteBold = 1;
TextDisplayMode.Border = 1;
// HFONT oldfont=(HFONT)Surface.SelectObject(LK8PanelBigFont);
switch(ModeIndex) {
case LKMODE_MAP:
_stprintf(Buffer,TEXT("MAP mode, 1 of 1"));
break;
case LKMODE_INFOMODE:
_stprintf(Buffer,TEXT("%d-%d"), ModeIndex,CURTYPE+1);
break;
case LKMODE_WP:
_stprintf(Buffer,TEXT("%d-%d"), ModeIndex,CURTYPE+1);
break;
case LKMODE_NAV:
_stprintf(Buffer,TEXT("%d-%d"), ModeIndex,CURTYPE+1);
break;
default:
_stprintf(Buffer,TEXT("UNKOWN mode"));
break;
}
TextInBox(hdc, &rc, Buffer, middlex, 200 , 0, &TextDisplayMode, false);
//Surface.SelectObject(oldfont);
return;
}
开发者ID:LK8000,项目名称:LK8000,代码行数:41,代码来源:LKDrawCpuStatsDebug.cpp
示例12: _DrawLine
//
// The heading track line, like on Garmin units
//
void MapWindow::DrawHeading(HDC hdc, POINT Orig, RECT rc ) {
if (DrawInfo.NAVWarning) return; // 100214
if ( mode.Is(MapWindow::Mode::MODE_CIRCLING)) return;
POINT p2;
double tmp = 200000*zoom.ResScaleOverDistanceModify();
if ( !( DisplayOrientation == TRACKUP || DisplayOrientation == NORTHCIRCLE || DisplayOrientation == TRACKCIRCLE )) {
double trackbearing = DrawInfo.TrackBearing;
p2.y= Orig.y - (int)(tmp*fastcosine(trackbearing));
p2.x= Orig.x + (int)(tmp*fastsine(trackbearing));
} else {
p2.x=Orig.x;
p2.y=Orig.y-(int)tmp;
}
// Reduce the rectangle for a better effect
rc.top+=NIBLSCALE(5);
rc.right-=NIBLSCALE(5);
rc.bottom-=NIBLSCALE(5);
rc.left+=NIBLSCALE(5);
ForcedClipping=true;
if (BlackScreen)
_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), Orig, p2, RGB_INVDRAW, rc); // 091109
else
_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), Orig, p2, RGB_BLACK, rc);
ForcedClipping=false;
}
开发者ID:peclik,项目名称:LK8000,代码行数:34,代码来源:DrawHeading.cpp
示例13: _DrawLine
//
// The heading track line, like on Garmin units
//
void MapWindow::DrawHeading(HDC hdc, POINT Orig, RECT rc ) {
if (GPS_INFO.NAVWarning) return; // 100214
if (zoom.RealScale()>5 || mode.Is(MapWindow::Mode::MODE_CIRCLING)) return;
POINT p2;
double tmp = 12000*zoom.ResScaleOverDistanceModify();
if ( !( DisplayOrientation == TRACKUP || DisplayOrientation == NORTHCIRCLE || DisplayOrientation == TRACKCIRCLE )) {
double trackbearing = DrawInfo.TrackBearing;
p2.y= Orig.y - (int)(tmp*fastcosine(trackbearing));
p2.x= Orig.x + (int)(tmp*fastsine(trackbearing));
} else {
p2.x=Orig.x;
p2.y=Orig.y-(int)tmp;
}
if (BlackScreen)
_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), Orig, p2, RGB_INVDRAW, rc); // 091109
else
_DrawLine(hdc, PS_SOLID, NIBLSCALE(1), Orig, p2, RGB_BLACK, rc);
}
开发者ID:Mazuk,项目名称:LK8000,代码行数:26,代码来源:DrawHeading.cpp
示例14: NIBLSCALE
//
// Turn Rate Indicator
//
void MapWindow::DrawAcceleration(HDC hDC, const RECT rc)
{
const double ScaleX = (rc.right - rc.left)/10;
const double ScaleY = (rc.top - rc.bottom)/10;
const double ScaleZ = (rc.top - rc.bottom)/20;
POINT Pos;
Pos.x = (rc.right - rc.left)/2 + (int)(DrawInfo.AccelY * ScaleX);
Pos.y = (rc.bottom - rc.top)/2 - (int)((DrawInfo.AccelZ - 1) * ScaleY);
const double radius = NIBLSCALE(15) + (int)(DrawInfo.AccelX * ScaleZ);
const HPEN oldPen = (HPEN) SelectObject(hDC, GetStockObject(BLACK_PEN));
const HBRUSH oldBrush = (HBRUSH)SelectObject(hDC, LKBrush_Red);
Circle(hDC, Pos.x, Pos.y - (int)(radius/2), (int)radius, rc, true, true);
SelectObject(hDC, oldBrush);
SelectObject(hDC, oldPen);
}
开发者ID:Turbo87,项目名称:LK8000,代码行数:20,代码来源:DrawTRI.cpp
示例15: switch
void MapWindow::DrawStartEndSector(LKSurface& Surface, const RECT& rc,
const POINT &Start, const POINT &End, int Index,
int Type, double Radius) {
double tmp;
LKSurface::OldPen oldpen;
LKSurface::OldBrush oldbrush;
switch (Type) {
case 0: // CIRCLE
tmp = Radius * zoom.ResScaleOverDistanceModify();
oldpen = Surface.SelectObject(hpStartFinishThick);
oldbrush = Surface.SelectObject(LKBrush_Hollow);
Surface.Circle(WayPointList[Index].Screen.x,
WayPointList[Index].Screen.y, (int) tmp, rc, false, false);
Surface.SelectObject(LKPen_Red_N1);
Surface.Circle(WayPointList[Index].Screen.x,
WayPointList[Index].Screen.y, (int) tmp, rc, false, false);
Surface.SelectObject(oldpen);
Surface.SelectObject(oldbrush);
break;
case 1: // LINE
Surface.DrawLine(PEN_SOLID, NIBLSCALE(5), End, Start, taskcolor, rc);
Surface.DrawLine(PEN_SOLID, NIBLSCALE(1), End, Start, LKColor(255, 0, 0), rc);
break;
case 2: // SECTOR
Surface.DrawLine(PEN_SOLID, NIBLSCALE(5), WayPointList[Index].Screen,
Start, taskcolor, rc);
Surface.DrawLine(PEN_SOLID, NIBLSCALE(5), WayPointList[Index].Screen,
End, taskcolor, rc);
Surface.DrawLine(PEN_SOLID, NIBLSCALE(1), WayPointList[Index].Screen,
Start, LKColor(255, 0, 0), rc);
Surface.DrawLine(PEN_SOLID, NIBLSCALE(1), WayPointList[Index].Screen,
End, LKColor(255, 0, 0), rc);
break;
}
}
开发者ID:acasadoalonso,项目名称:LK8000,代码行数:39,代码来源:DrawStartSector.cpp
示例16: LKASSERT
//.........这里部分代码省略.........
DrawTaskAAT(Surface, rct);
DrawTask(Surface, rct, _Proj, Orig_Aircraft);
}
if (IsMultimapWaypoints()) {
DrawWaypointsNew(Surface,rct);
}
if (Flags_DrawFAI)
DrawFAIOptimizer(Surface, rct, _Proj, Orig_Aircraft);
DeclutterMode=olddecluttermode; // set it back correctly
/* THIS STUFF DOES NOT WORK IN SHARED MAPS, YET
NEED FIXING LatLon2Screen for shared maps using Sideview
#ifdef GTL2
if (((FinalGlideTerrain == 2) || (FinalGlideTerrain == 4)) &&
DerivedDrawInfo.TerrainValid)
DrawTerrainAbove(hdc, rct);
#endif
*/
//
// Stuff for MAPTRK only (M1)
if (MapSpaceMode==MSM_MAPTRK) {
if(IsMultimapTerrain() || IsMultimapTopology() ) {
if (FinalGlideTerrain && DerivedDrawInfo.TerrainValid)
DrawGlideThroughTerrain(Surface, rct, _Proj);
}
if (extGPSCONNECT)
DrawBearing(Surface, rct, _Proj);
// Wind arrow
if (IsMultimapOverlaysGauges())
DrawWindAtAircraft2(Surface, Orig_Aircraft, rct);
}
if (MapSpaceMode==MSM_MAPWPT) {
if (extGPSCONNECT)
DrawBearing(Surface, rct, _Proj);
}
switch(GetMMNorthUp(getsideviewpage)) {
case NORTHUP:
default:
DrawCompass( Surface, rct, 0);
break;
case TRACKUP:
if(getsideviewpage == IM_HEADING || getsideviewpage == IM_VISUALGLIDE)
DrawCompass( Surface, rct, DrawInfo.TrackBearing-90.0);
else
DrawCompass( Surface, rct, DisplayAngle);
break;
}
/****************************************************************************************************
* draw vertical line
****************************************************************************************************/
POINT line[2];
line[0].x = rct.left;
line[0].y = Orig_Aircraft.y-1;
line[1].x = rct.right;
line[1].y = line[0].y;
switch(GetMMNorthUp(getsideviewpage))
{
case TRACKUP:
// Are we are not topview fullscreen?
if (Current_Multimap_SizeY<SIZE4 && !(MapSpaceMode==MSM_VISUALGLIDE)) {
Surface.DrawDashLine(NIBLSCALE(1), line[0], line[1], Sideview_TextColor, rct);
} else {
if (TrackBar) {
DrawHeadUpLine(Surface, Orig, rct, psDia->fXMin ,psDia->fXMax);
if (ISGAAIRCRAFT) DrawFuturePos(Surface, Orig, rct, true);
}
}
break;
case NORTHUP:
default:
if (TrackBar) {
DrawHeadUpLine(Surface, Orig, rct, psDia->fXMin ,psDia->fXMax);
if (ISGAAIRCRAFT) DrawFuturePos(Surface, Orig, rct, true);
}
break;
}
DrawAircraft(Surface, Orig_Aircraft);
// M3 has sideview always on, so wont apply here, and no need to check
if (Current_Multimap_SizeY==SIZE4) {
DrawMapScale(Surface,rct,0);
}
MapWindow::zoom.RequestedScale(fOldScale);
EnableThermalLocator = iOldLocator;
DisplayOrientation = iOldDisplayOrientation;
Surface.SelectObject(hfOld);
return 0;
}
开发者ID:brunotl,项目名称:LK8000,代码行数:101,代码来源:TopView.cpp
示例17: guard
void MapWindow::DrawAirspaceLabels(HDC hdc, const RECT rc, const POINT Orig_Aircraft)
{
static short int label_sequencing_divider = 0;
CAirspaceList::const_iterator it;
const CAirspaceList& airspaces_to_draw = CAirspaceManager::Instance().GetAirspacesForWarningLabels();
if (label_sequencing_divider) --label_sequencing_divider;
// Draw warning position and label on top of all airspaces
if (1) {
CCriticalSection::CGuard guard(CAirspaceManager::Instance().MutexRef());
for (it=airspaces_to_draw.begin(); it != airspaces_to_draw.end(); ++it) {
if ((*it)->WarningLevel() > awNone) {
POINT sc;
double lon;
double lat;
int vdist;
AirspaceWarningDrawStyle_t vlabeldrawstyle, hlabeldrawstyle;
bool distances_ready = (*it)->GetWarningPoint(lon, lat, hlabeldrawstyle, vdist, vlabeldrawstyle);
TCHAR hbuf[NAME_SIZE+16], vDistanceText[16];
TextInBoxMode_t TextDisplayMode = {0};
bool hlabel_draws = false;
bool vlabel_draws = false;
// Horizontal warning point
if (distances_ready && (hlabeldrawstyle > awsHidden) && PointVisible(lon, lat)) {
LatLon2Screen(lon, lat, sc);
DrawBitmapIn(hdc, sc, hAirspaceWarning,true);
Units::FormatUserAltitude(vdist, vDistanceText, sizeof(vDistanceText)/sizeof(vDistanceText[0]));
_tcscpy(hbuf, (*it)->Name());
wcscat(hbuf, TEXT(" "));
wcscat(hbuf, vDistanceText);
switch (hlabeldrawstyle) {
default:
case awsHidden:
case awsBlack:
TextDisplayMode.Color = RGB_BLACK;
break;
case awsAmber:
TextDisplayMode.Color = RGB_ORANGE;
break;
case awsRed:
TextDisplayMode.Color = RGB_RED;
break;
} // sw
TextDisplayMode.SetTextColor = 1;
TextDisplayMode.AlligneCenter = 1;
if ( (MapBox == (MapBox_t)mbBoxed) || (MapBox == (MapBox_t)mbBoxedNoUnit)) {
TextDisplayMode.Border = 1;
} else {
if (TextDisplayMode.Color==RGB_BLACK)
TextDisplayMode.WhiteBold = 0; // no black outline for black background..
else
TextDisplayMode.WhiteBold = 1; // outlined
}
hlabel_draws = TextInBox(hdc, &rc, hbuf, sc.x, sc.y+NIBLSCALE(15), 0, &TextDisplayMode, true);
}
// Vertical warning point
if (distances_ready && vlabeldrawstyle > awsHidden) {
//DrawBitmapIn(hdc, Orig_Aircraft, hAirspaceWarning);
Units::FormatUserAltitude(vdist, vDistanceText, sizeof(vDistanceText)/sizeof(vDistanceText[0]));
_tcscpy(hbuf, (*it)->Name());
wcscat(hbuf, TEXT(" "));
wcscat(hbuf, vDistanceText);
switch (vlabeldrawstyle) {
default:
case awsHidden:
case awsBlack:
TextDisplayMode.Color = RGB_BLACK;
break;
case awsAmber:
TextDisplayMode.Color = RGB_ORANGE;
break;
case awsRed:
TextDisplayMode.Color = RGB_RED;
break;
} // sw
TextDisplayMode.SetTextColor = 1;
TextDisplayMode.AlligneCenter = 1;
if ( (MapBox == (MapBox_t)mbBoxed) || (MapBox == (MapBox_t)mbBoxedNoUnit)) {
TextDisplayMode.Border = 1;
} else {
if (TextDisplayMode.Color==RGB_BLACK)
TextDisplayMode.WhiteBold = 0; // no black outline for black background..
else
TextDisplayMode.WhiteBold = 1; // outlined
}
vlabel_draws = TextInBox(hdc, &rc, hbuf, Orig_Aircraft.x, Orig_Aircraft.y+NIBLSCALE(15), 0, &TextDisplayMode, true);
}
if (!label_sequencing_divider) CAirspaceManager::Instance().AirspaceWarningLabelPrinted(**it, hlabel_draws || vlabel_draws);
//.........这里部分代码省略.........
开发者ID:Acrobot,项目名称:LK8000,代码行数:101,代码来源:DrawAirspaceLabels.cpp
示例18: CreateProgressDialog
//.........这里部分代码省略.........
break;
default:
_stprintf(srcfile,_T("%s\\LKSTART_DEFAULT.BMP"),sDir);
break;
}
}
#if (WINDOWSPC>0)
hWelcomeBitmap=(HBITMAP)LoadImage(GetModuleHandle(NULL),srcfile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
#else
hWelcomeBitmap=(HBITMAP)SHLoadDIBitmap(srcfile);
#endif
// still nothing? use internal (poor man) resource
if (hWelcomeBitmap==NULL)
hWelcomeBitmap=LoadBitmap(hInst, MAKEINTRESOURCE(IDB_SWIFT));
hTempDC = CreateCompatibleDC(hStartupDC);
// AA
HBITMAP oldBitmap = (HBITMAP)SelectObject(hTempDC, hWelcomeBitmap);
SelectObject(hTempDC, LKSTARTBOTTOMFONT);
SIZE TextSize;
GetTextExtentPoint(hTempDC, _T("X"),1, &TextSize);
yFontSize = TextSize.cy;
xFontSize = TextSize.cx;
BITMAP bm;
GetObject(hWelcomeBitmap,sizeof(bm), &bm);
StretchBlt(hStartupDC,0,0,
ScreenSizeX,ScreenSizeY-1,
hTempDC, 0, 0,
2,2,
BLACKNESS);
if ( (bm.bmWidth >ScreenSizeX)||(bm.bmHeight>ScreenSizeY)) {
StretchBlt(hStartupDC,0,0,
ScreenSizeX,ScreenSizeY-NIBLSCALE(2)-(yFontSize*2)-1,
hTempDC, 0, 0,
bm.bmWidth,bm.bmHeight,
SRCCOPY);
} else {
BitBlt(hStartupDC,(ScreenSizeX-bm.bmWidth)/2,0,bm.bmWidth,bm.bmHeight,hTempDC, 0, 0, SRCCOPY);
}
DeleteObject(hWelcomeBitmap);
// AA
SelectObject(hTempDC, oldBitmap);
if (DeleteDC(hTempDC)==0) StartupStore(_T("**** Cannot delete hTempDC\n"));
}
BringWindowToTop(hStartupWindow); // we shall return here also on shutdown and file reloads
// RECT is left, top, right, bottom
RECT PrintAreaR;
PrintAreaR.left = NIBLSCALE(2);
PrintAreaR.bottom = ScreenSizeY-NIBLSCALE(2);
PrintAreaR.top = PrintAreaR.bottom - (yFontSize*2);
PrintAreaR.right = ScreenSizeX - NIBLSCALE(2);
HFONT oldFont=(HFONT)SelectObject(hStartupDC,LKSTARTBOTTOMFONT);
HBRUSH hB=LKBrush_Petrol;
FillRect(hStartupDC,&PrintAreaR, hB);
// Create text area
// we cannot use LKPen here because they are not still initialised for startup menu. no problem
HPEN hP=(HPEN) CreatePen(PS_SOLID,NIBLSCALE(1),RGB_GREEN);
SelectObject(hStartupDC,hP);
SelectObject(hStartupDC,hB);
Rectangle(hStartupDC, PrintAreaR.left,PrintAreaR.top,PrintAreaR.right,PrintAreaR.bottom);
DeleteObject(hP);
hP=(HPEN) CreatePen(PS_SOLID,NIBLSCALE(1),RGB_BLACK);
SelectObject(hStartupDC,hP);
Rectangle(hStartupDC, PrintAreaR.left+NIBLSCALE(2),PrintAreaR.top+NIBLSCALE(2),PrintAreaR.right-NIBLSCALE(2),PrintAreaR.bottom-NIBLSCALE(2));
SetTextColor(hStartupDC,RGB_WHITE);
SetBkMode(hStartupDC,TRANSPARENT);
unsigned int maxchars= (ScreenSizeX/xFontSize)-1;
if (_tcslen(text) <maxchars) {
maxchars=_tcslen(text);
}
ExtTextOut(hStartupDC,PrintAreaR.left+(xFontSize/2),PrintAreaR.top + ((PrintAreaR.bottom - PrintAreaR.top)/2)-(yFontSize/2),
ETO_OPAQUE,NULL,text,maxchars,NULL);
SelectObject(hStartupDC,oldFont);
// Sleep(300); // Slow down display of data? No because in case of important things, Sleep is set by calling part
DeleteObject(hP);
return hStartupWindow;
}
开发者ID:braun,项目名称:LK8000,代码行数:101,代码来源:Dialogs.cpp
示例19: SetTextColor
void MapWindow::DrawTask(HDC hdc, RECT rc, const POINT &Orig_Aircraft) {
int i;
double tmp;
COLORREF whitecolor = RGB_WHITE;
COLORREF origcolor = SetTextColor(hDCTemp, whitecolor);
HPEN oldpen = 0;
HBRUSH oldbrush = 0;
static short size_tasklines=0;
if (DoInit[MDI_DRAWTASK]) {
switch (ScreenSize) {
case ss480x272:
case ss272x480:
case ss320x240:
case ss240x320:
size_tasklines=NIBLSCALE(4);
break;
default:
size_tasklines=NIBLSCALE(3);
break;
}
DoInit[MDI_DRAWTASK]=false;
}
if (!WayPointList) return;
oldpen = (HPEN) SelectObject(hdc, hpStartFinishThick);
oldbrush = (HBRUSH) SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
LockTaskData(); // protect from external task changes
for (i = 1; ValidTaskPoint(i); i++) {
if (!ValidTaskPoint(i + 1)) { // final waypoint
if (ActiveWayPoint > 1 || !ValidTaskPoint(2)) {
// only draw finish line when past the first
// waypoint. FIXED 110307: or if task is with only 2 tps
DrawStartEndSector(hdc, rc, Task[i].Start, Task[i].End, Task[i].Index, FinishLine, FinishRadius);
}
} else { // normal sector
if (AATEnabled != TRUE) {
//_DrawLine(hdc, PS_DASH, NIBLSCALE(3), WayPointList[Task[i].Index].Screen, Task[i].Start, RGB_PETROL, rc);
//_DrawLine(hdc, PS_DASH, NIBLSCALE(3), WayPointList[Task[i].Index].Screen, Task[i].End, RGB_PETROL, rc);
// DrawDashLine(hdc, size_tasklines, WayPointList[Task[i].Index].Screen, Task[i].Start, RGB_PETROL, rc);
// DrawDashLine(hdc, size_tasklines, WayPointList[Task[i].Index].Screen, Task[i].End, RGB_PETROL, rc);
}
int Type = 0;
double Radius = 0.;
GetTaskSectorParameter(i, &Type, &Radius);
switch (Type) {
case CIRCLE:
tmp = Radius * zoom.ResScaleOverDistanceModify();
Circle(hdc,
WayPointList[Task[i].Index].Screen.x,
WayPointList[Task[i].Index].Screen.y,
(int) tmp, rc, false, false);
break;
case SECTOR:
tmp = Radius * zoom.ResScaleOverDistanceModify();
Segment(hdc,
WayPointList[Task[i].Index].Screen.x,
WayPointList[Task[i].Index].Screen.y, (int) tmp, rc,
Task[i].AATStartRadial - DisplayAngle,
Task[i].AATFinishRadial - DisplayAngle);
break;
case DAe:
if (!AATEnabled) { // this Type exist only if not AAT task
// JMW added german rules
tmp = 500 * zoom.ResScaleOverDistanceModify();
Circle(hdc,
WayPointList[Task[i].Index].Screen.x,
WayPointList[Task[i].Index].Screen.y,
(int) tmp, rc, false, false);
tmp = 10e3 * zoom.ResScaleOverDistanceModify();
Segment(hdc,
WayPointList[Task[i].Index].Screen.x,
WayPointList[Task[i].Index].Screen.y, (int) tmp, rc,
Task[i].AATStartRadial - DisplayAngle,
Task[i].AATFinishRadial - DisplayAngle);
}
break;
case LINE:
if (!AATEnabled) { // this Type exist only if not AAT task
if(ISGAAIRCRAFT) {
POINT start,end;
double rotation=AngleLimit360(Task[i].Bisector-DisplayAngle);
int length=14*ScreenScale; //Make intermediate WP lines always of the same size independent by zoom level
start.x=WayPointList[Task[i].Index].Screen.x+(long)(length*fastsine(rotation));
start.y=WayPointList[Task[i].Index].Screen.y-(long)(length*fastcosine(rotation));
rotation=Reciprocal(rotation);
end.x=WayPointList[Task[i].Index].Screen.x+(long)(length*fastsine(rotation));
end.y=WayPointList[Task[i].Index].Screen.y-(long)(length*fastcosine(rotation));
_DrawLine(hdc, PS_SOLID, NIBLSCALE(3), start, end, taskcolor, rc);
} else _DrawLine(hdc, PS_SOLID, NIBLSCALE(3), Task[i].Start, Task[i].End, taskcolor, rc);
}
break;
//.........这里部分代码省略.........
开发者ID:IvanSantanna,项目名称:LK8000,代码行数:101,代码来源:DrawTask.cpp
示例20: LKASSERT
void MapWindow::DrawVisualGlide(LKSurface& Surface, const DiagrammStruct& sDia) {
const RECT& rci = sDia.rc;
unsigned short numboxrows = 1;
#if BUGSTOP
LKASSERT(Current_Multimap_SizeY < SIZE4);
#endif
switch (Current_Multimap_SizeY) {
case SIZE0:
case SIZE1:
numboxrows = 3;
break;
case SIZE2:
numboxrows = 2;
break;
case SIZE3:
numboxrows = 1;
break;
case SIZE4:
return;
default:
LKASSERT(0);
break;
}
if (!ScreenLandscape) {
numboxrows++;
if (numboxrows > 3) numboxrows = 3;
}
TCHAR tmpT[30];
line1Font = LK8VisualTopFont;
line2Font = LK8VisualBotFont;
SIZE textSizeTop, textSizeBot;
Surface.SelectObject(line1Font);
_stprintf(tmpT, _T("MMMM"));
Surface.GetTextSize(tmpT, &textSizeTop);
Surface.SelectObject(line2Font);
_stprintf(tmpT, _T("55.5%s 79%s%s "), Units::GetDistanceName(), MsgToken(2179), MsgToken(2183));
Surface.GetTextSize(tmpT, &textSizeBot);
// we can cut the waypoint name, but not the value data, so we use the second row of data
// to size the box for everything.
maxtSizeX = textSizeBot.cx;
int a = (rci.right-rci.left) / (textSizeBot.cx+BOXINTERVAL);
int b = (rci.right-rci.left) - a * (textSizeBot.cx)-(BOXINTERVAL * (a + 1));
boxSizeX = textSizeBot.cx + (b / (a + 1));
boxSizeY = textSizeTop.cy + 1; // single line (wp name) + distance from bottombar
if (numboxrows > 1) {
boxSizeY += (textSizeBot.cy * (numboxrows - 1)) - NIBLSCALE(2);
if (numboxrows > 2) boxSizeY -= NIBLSCALE(1);
}
#if DEBUG_SCR
StartupStore(_T("boxX=%d boxY=%d \n"), boxSizeX, boxSizeY);
#endif
#if DEBUG_SCR
StartupStore(_T("VG AREA LTRB: %d,%d %d,%d\n"), rci.left, rci.top, rci.right, rci.bottom);
#endif
const auto oldBrush = Surface.SelectObject(LKBrush_White);
const auto oldPen = Surface.SelectObject(LK_BLACK_PEN);
BrushReference brush_back;
if (!INVERTCOLORS) {
brush_back = LKBrush_Black;
} else {
brush_back = LKBrush_Nlight;
}
Surface.FillRect(&rci, brush_back);
POINT center, p1, p2;
center.y = rci.top + (rci.bottom - rci.top) / 2;
center.x = rci.left + (rci.right - rci.left) / 2;
// numSlotX is the number items we can print horizontally.
unsigned short numSlotX = (rci.right - rci.left) / (boxSizeX + BOXINTERVAL);
if (numSlotX > MAXBSLOT) numSlotX = MAXBSLOT;
#if BUGSTOP
LKASSERT(numSlotX > 0);
#endif
if (numSlotX == 0) return;
unsigned short boxInterval = ((rci.right - rci.left)-(boxSizeX * numSlotX)) / (numSlotX + 1);
unsigned short oddoffset = ( (rci.right-rci.left) - (boxSizeX * numSlotX) - boxInterval * (numSlotX + 1)) / 2;
/*
#if BUGSTOP
// not really harmful
LKASSERT(oddoffset<=boxInterval);
#endif
*/
//.........这里部分代码省略.........
开发者ID:LK8000,项目名称:LK8000,代码行数:101,代码来源:DrawVisualGlide.cpp
注:本文中的NIBLSCALE函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论