Пример #1
0
 void BeveledRoundedRectangle(Pt ul, Pt lr, Clr color, Clr border_color, bool up, unsigned int corner_radius/* = 5*/, unsigned int bevel_thick/* = 2*/)
 {
     RoundedRectangle(ul, lr, color,
                      (up ? LightColor(border_color) : DarkColor(border_color)),
                      (up ? DarkColor(border_color) : LightColor(border_color)),
                      corner_radius, bevel_thick);
 }
Пример #2
0
 void Bubble(Pt ul, Pt lr, Clr color, bool up/* = true*/)
 {
     BubbleArc(ul, lr, color,
               (up ? DarkColor(color) : LightColor(color)),
               (up ? LightColor(color) : DarkColor(color)),
               0, 0);
 }
Пример #3
0
 void BeveledCircle(Pt ul, Pt lr, Clr color, Clr border_color, bool up/* = true*/, unsigned int bevel_thick/* = 2*/)
 {
     CircleArc(ul, lr, color, 
               (up ? DarkColor(border_color) : LightColor(border_color)),
               (up ? LightColor(border_color) : DarkColor(border_color)),
               bevel_thick, 0, 0);
 }
Пример #4
0
 void BubbleRectangle(Pt ul, Pt lr, Clr color, bool up, unsigned int corner_radius/* = 5*/)
 {
     ::BubbleRectangle(ul, lr, color,
                       (up ? LightColor(color) : DarkColor(color)),
                       (up ? DarkColor(color) : LightColor(color)),
                       corner_radius);
 }
Пример #5
0
void
HorizonRenderer::Draw(Canvas &canvas, const PixelRect &rc, const NMEAInfo &Basic)
{
    /*
    This feature of having a backup artificial horizon based on inferred
    orientation from GPS and vario data is useful, and reasonably well
    tested, but has the issue of potentially invalidating use of XCSoar in
    FAI contests due to rule ref Annex A to Section 3 (2010 Edition) 4.1.2
    "No instruments permitting pilots to fly without visual reference to
    the ground may be carried on board, even if made unserviceable."  The
    quality of XCSoar's pseudo-AH is arguably good enough that this
    violates the rule.  We need to seek clarification as to whether this
    is the case or not.
    */

    RasterPoint center;
    center.y = (rc.top + rc.bottom) / 2;
    center.x = (rc.left + rc.right) / 2;
    const int radius = min(rc.right - rc.left, rc.bottom - rc.top) / 2 -
                       Layout::Scale(1);

    Pen hpHorizonSky(Layout::Scale(1), DarkColor(Graphics::skyColor));
    Brush hbHorizonSky(Graphics::skyColor);
    Pen hpHorizonGround(Layout::Scale(1), DarkColor(Graphics::GroundColor));

#define fixed_div fixed(1.0 / 50.0)
#define fixed_89 fixed_int_constant(89)

    fixed phi = max(-fixed_89,
                    min(fixed_89, Basic.acceleration.bank_angle.Degrees()));
    fixed alpha = fixed_rad_to_deg * acos(max(-fixed_one,min(fixed_one,
                                          Basic.acceleration.pitch_angle.Degrees() * fixed_div)));
    fixed sphi = fixed_180 - phi;
    Angle alpha1 = Angle::Degrees(sphi - alpha);
    Angle alpha2 = Angle::Degrees(sphi + alpha);

    // draw sky part
    canvas.Select(hpHorizonSky);
    canvas.Select(hbHorizonSky);
    canvas.DrawSegment(center.x, center.y, radius, alpha2, alpha1, true);

    // draw ground part
    canvas.Select(hpHorizonGround);
    canvas.Select(Graphics::hbGround);
    canvas.DrawSegment(center.x, center.y, radius, alpha1, alpha2, true);

    // draw aircraft symbol
    Pen aircraft_pen(Layout::Scale(2), COLOR_BLACK);
    canvas.Select(aircraft_pen);
    canvas.line(center.x + radius / 2, center.y, center.x - radius / 2, center.y);
    canvas.line(center.x, center.y - radius / 4, center.x, center.y);

    // draw 45 degree dash marks
    const UPixelScalar rr2p = uround(radius * fixed_sqrt_half) + Layout::Scale(1);
    const UPixelScalar rr2n = rr2p - Layout::Scale(2);
    canvas.line(center.x + rr2p, center.y - rr2p,
                center.x + rr2n, center.y - rr2n);
    canvas.line(center.x - rr2p, center.y - rr2p,
                center.x - rr2n, center.y - rr2n);
}
Пример #6
0
 void BeveledRectangle(Pt ul, Pt lr, Clr color, Clr border_color, bool up, unsigned int bevel_thick/* = 2*/,
                       bool bevel_left/* = true*/, bool bevel_top/* = true*/, bool bevel_right/* = true*/, bool bevel_bottom/* = true*/)
 {
     Rectangle(ul, lr, color,
               (up ? LightColor(border_color) : DarkColor(border_color)),
               (up ? DarkColor(border_color) : LightColor(border_color)),
               bevel_thick, bevel_left, bevel_top, bevel_right, bevel_bottom);
 }
Пример #7
0
/**
 * Returns a darker version of the specified color.
 */
static inline constexpr Color
DarkColor(Color c)
{
#ifdef GREYSCALE
  return Color(DarkColor(c.GetLuminosity()));
#else
  return Color(DarkColor(c.Red()), DarkColor(c.Green()),
               DarkColor(c.Blue()));
#endif
}
Пример #8
0
void
HorizonLook::Initialise()
{
  aircraft_pen.Create(Layout::Scale(2), COLOR_BLACK);

  sky_color = Color(0x0a, 0xb9, 0xf3);
  sky_brush.Create(sky_color);
  sky_pen.Create(Layout::Scale(1), DarkColor(sky_color));

  terrain_color = Color(0x80, 0x45, 0x15);
  terrain_brush.Create(terrain_color);
  terrain_pen.Create(Layout::Scale(1), DarkColor(terrain_color));
}
Пример #9
0
void
Canvas::DrawButton(PixelRect rc, bool down)
{
  const Pen old_pen = pen;

  Color gray = COLOR_LIGHT_GRAY;
  DrawFilledRectangle(rc, gray);

  Pen bright(1, LightColor(gray));
  Pen dark(1, DarkColor(gray));

  Select(down ? dark : bright);
  DrawTwoLines(rc.left, rc.bottom - 2, rc.left, rc.top,
            rc.right - 2, rc.top);
  DrawTwoLines(rc.left + 1, rc.bottom - 3, rc.left + 1, rc.top + 1,
            rc.right - 3, rc.top + 1);

  Select(down ? bright : dark);
  DrawTwoLines(rc.left + 1, rc.bottom - 1, rc.right - 1, rc.bottom - 1,
            rc.right - 1, rc.top + 1);
  DrawTwoLines(rc.left + 2, rc.bottom - 2, rc.right - 2, rc.bottom - 2,
            rc.right - 2, rc.top + 2);

  pen = old_pen;
}
Пример #10
0
void
VarioBarLook::Initialise(const Font &_font)
{
  const uint8_t alpha = 0xA0;

  brush_sink.Set(ColorWithAlpha(COLOR_RED, alpha));
  brush_sink_avg.Set(ColorWithAlpha(LightColor(COLOR_RED), alpha));
  pen_sink.Set(Layout::ScalePenWidth(1), DarkColor(COLOR_RED));

  brush_climb.Set(ColorWithAlpha(COLOR_GREEN, alpha));
  brush_climb_avg.Set(ColorWithAlpha((LightColor(LightColor(COLOR_GREEN))), alpha));
  pen_climb.Set(Layout::ScalePenWidth(1), DarkColor(COLOR_GREEN));

  brush_mc.Set(ColorWithAlpha(COLOR_GRAY, alpha));
  pen_mc.Set(Layout::ScalePenWidth(1), DarkColor(COLOR_GRAY));

  font = &_font;
}
Пример #11
0
void
ThermalBandLook::Initialise(bool _inverse, Color sky_color)
{
  const uint8_t alpha = ALPHA_OVERLAY;

  inverse = _inverse;

  brush_active.Create(ColorWithAlpha(sky_color, alpha));
  brush_inactive.Create(ColorWithAlpha(DarkColor(sky_color), alpha/2));

  pen_active.Create(Layout::ScalePenWidth(1), DarkColor(sky_color));
  pen_inactive.Create(Layout::ScalePenWidth(1), sky_color);

  white_pen.Create(Layout::ScalePenWidth(2), COLOR_WHITE);
  black_pen.Create(Layout::ScalePenWidth(2), COLOR_BLACK);

  working_band_pen.Create(Layout::ScalePenWidth(2), COLOR_GRAY);
}
Пример #12
0
void
AircraftLook::Initialise()
{
  aircraft_pen.Set(1, COLOR_DARK_GRAY);
  aircraft_simple1_pen.Set(Layout::Scale(1), COLOR_BLACK);
  aircraft_simple2_pen.Set(Layout::Scale(3), COLOR_WHITE);

  canopy_pen.Set(1, DarkColor(COLOR_CYAN));
  canopy_brush.Set(COLOR_CYAN);
}
Пример #13
0
void
ThermalBandLook::Initialise(bool _inverse, Color sky_color)
{
  inverse = _inverse;

  brush.Create(ColorWithAlpha(sky_color, 0xA0));
  pen.Create(Layout::ScalePenWidth(1), DarkColor(sky_color));

  white_pen.Create(2, COLOR_WHITE);
  black_pen.Create(2, COLOR_BLACK);
}
Пример #14
0
void
ButtonLook::Initialise(const Font &_font)
{
  font = &_font;

  standard.foreground_color = COLOR_BLACK;
  standard.foreground_brush.Set(standard.foreground_color);
  standard.background_color = COLOR_LIGHT_GRAY;
  standard.light_border_pen.Set(1, LightColor(standard.background_color));
  standard.dark_border_pen.Set(1, DarkColor(standard.background_color));

  focused.foreground_color = COLOR_WHITE;
  focused.foreground_brush.Set(focused.foreground_color);
  focused.background_color = COLOR_XCSOAR_DARK;
  focused.light_border_pen.Set(1, LightColor(focused.background_color));
  focused.dark_border_pen.Set(1, DarkColor(focused.background_color));

  disabled.color = COLOR_GRAY;
  disabled.brush.Set(disabled.color);
}
Пример #15
0
std::shared_ptr<GG::StateButton> CUIStyle::NewTabBarTab(
    const std::string& str, const std::shared_ptr<GG::Font>& font,
    GG::Flags<GG::TextFormat> format, GG::Clr color,
    GG::Clr text_color/* = GG::CLR_BLACK*/) const
{
    auto retval = GG::Wnd::Create<CUIStateButton>(str, format, std::make_shared<CUITabRepresenter>());
    retval->SetColor(ClientUI::WndColor());
    retval->GetLabel()->SetTextColor(DarkColor(ClientUI::TextColor()));
    retval->Resize(retval->MinUsableSize() + GG::Pt(GG::X(12), GG::Y0));
    return retval;
}
Пример #16
0
void
AircraftLook::Initialise()
{
  // Note: No scaling needed. Pens are used with CanvasRotateShift, which
  //       applies Layout::scale.
  aircraft_pen.Create(1, COLOR_DARK_GRAY);
  aircraft_simple1_pen.Create(1, COLOR_BLACK);
  aircraft_simple2_pen.Create(3, COLOR_WHITE);

  canopy_pen.Create(1, DarkColor(COLOR_CYAN));
  canopy_brush.Create(COLOR_CYAN);
}
Пример #17
0
void
WindArrowLook::Initialise(const Font &_font, bool inverse)
{
  arrow_pen.Create(Layout::Scale(1),
                   inverse
                   ? (HasColors() ? LightColor(COLOR_GRAY) : COLOR_WHITE)
                   : (HasColors() ? DarkColor(COLOR_GRAY) : COLOR_BLACK));
  tail_pen.Create(Pen::DASH2, 1, inverse ? COLOR_WHITE : COLOR_BLACK);
  arrow_brush.Create(IsDithered() ? COLOR_DARK_GRAY : COLOR_GRAY);

  font = &_font;
}
Пример #18
0
void
TaskLook::Initialise()
{
  // Magenta ICAO color is 0x65,0x23,0x1c
  const Color task_color = Color(0x62, 0x4e, 0x90);
  const Color bearing_color = Color(0x3e, 0x30, 0x5f);
  const Color isoline_color = bearing_color;

  oz_current_pen.Create(Pen::SOLID, Layout::ScalePenWidth(2), task_color);
  oz_active_pen.Create(Pen::SOLID, Layout::ScalePenWidth(1), task_color);
  oz_inactive_pen.Create(Pen::SOLID, Layout::ScalePenWidth(1),
                      DarkColor(task_color));

  leg_active_pen.Create(Pen::DASH, Layout::ScalePenWidth(2), task_color);
  leg_inactive_pen.Create(Pen::DASH, Layout::ScalePenWidth(1), task_color);
  arrow_pen.Create(Layout::ScalePenWidth(1), task_color);

  isoline_pen.Create(Pen::DASH, Layout::ScalePenWidth(1), isoline_color);

  bearing_pen.Create(Layout::ScalePenWidth(2),
                  HasColors() ? bearing_color : COLOR_BLACK);
  best_cruise_track_brush.Create(bearing_color);
  best_cruise_track_pen.Create(Layout::ScalePenWidth(1),
                               HasColors()
                               ? DarkColor(bearing_color)
                               : COLOR_BLACK);

  highlight_pen.Create(Layout::ScalePenWidth(4), COLOR_BLACK);

  target_icon.LoadResource(IDB_TARGET, IDB_TARGET_HD);

  hbGray.Create(COLOR_GRAY);
  hbGreen.Create(COLOR_GREEN);
  hbOrange.Create(COLOR_ORANGE);
  hbLightGray.Create(COLOR_LIGHT_GRAY);
  hbNotReachableTerrain.Create(LightColor(COLOR_RED));
}
Пример #19
0
void
ButtonLook::Initialise(const Font &_font)
{
  font = &_font;

  standard.foreground_color = COLOR_BLACK;
  standard.foreground_brush.Set(standard.foreground_color);
  standard.background_color = IsDithered() ? COLOR_WHITE : COLOR_LIGHT_GRAY;
  if (IsDithered()) {
    standard.light_border_pen.Set(1, COLOR_BLACK);
    standard.dark_border_pen.Set(1, COLOR_BLACK);
  } else if (!HasColors()) {
    standard.light_border_pen.Set(1, LightColor(COLOR_DARK_GRAY));
    standard.dark_border_pen.Set(1, COLOR_BLACK);
  } else {
    standard.light_border_pen.Set(1, LightColor(standard.background_color));
    standard.dark_border_pen.Set(1, DarkColor(standard.background_color));
  }

  focused.foreground_color = COLOR_WHITE;
  focused.foreground_brush.Set(focused.foreground_color);
  focused.background_color = IsDithered() ? COLOR_BLACK : COLOR_XCSOAR_DARK;
  if (IsDithered()) {
    focused.light_border_pen.Set(1, COLOR_WHITE);
    focused.dark_border_pen.Set(1, COLOR_WHITE);
  } else if (!HasColors()) {
    focused.light_border_pen.Set(1, LightColor(COLOR_DARK_GRAY));
    focused.dark_border_pen.Set(1, COLOR_BLACK);
  } else {
    focused.light_border_pen.Set(1, LightColor(focused.background_color));
    focused.dark_border_pen.Set(1, DarkColor(focused.background_color));
  }

  disabled.color = COLOR_GRAY;
  disabled.brush.Set(disabled.color);
}
Пример #20
0
 void BeveledX(Pt ul, Pt lr, Clr color)
 { XMark(ul, lr, color, LightColor(color), DarkColor(color)); }
Пример #21
0
 void BeveledCheck(Pt ul, Pt lr, Clr color)
 { Check(ul, lr, color, LightColor(color), DarkColor(color)); }
Пример #22
0
COLORREF TranslateColor(COLORREF clr, int nTransalte)
{
	return nTransalte == 0 ? clr : nTransalte > 0 ? LightColor(clr, nTransalte) : DarkColor(clr, nTransalte);
}
Пример #23
0
#include "Renderer/AirspaceRendererSettings.hpp"
#include "resource.h"
#include "Util/Macros.hpp"

#ifdef USE_GDI
#include "Screen/GDI/AlphaBlend.hpp"
#endif

const Color AirspaceLook::preset_colors[] = {
  COLOR_RED,
  COLOR_GREEN,
  COLOR_BLUE,
  COLOR_YELLOW,
  COLOR_MAGENTA,
  COLOR_CYAN,
  DarkColor(COLOR_RED),
  DarkColor(COLOR_GREEN),
  DarkColor(COLOR_BLUE),
  DarkColor(COLOR_YELLOW),
  DarkColor(COLOR_MAGENTA),
  DarkColor(COLOR_CYAN),
  COLOR_WHITE,
  COLOR_LIGHT_GRAY,
  COLOR_GRAY,
  COLOR_BLACK,
};

void
AirspaceLook::Initialise(const AirspaceRendererSettings &settings)
{
  for (unsigned i = 0; i < AIRSPACECLASSCOUNT; ++i) {