void SwitchViewManager::UpdateProperties(ShadowNodeBase* nodeToUpdate, const folly::dynamic& reactDiffMap)
{
  auto toggleSwitch = nodeToUpdate->GetView().as<winrt::ToggleSwitch>();
  if (toggleSwitch == nullptr)
    return;

  for (const auto& pair : reactDiffMap.items())
  {
    const std::string& propertyName = pair.first.getString();
    const folly::dynamic& propertyValue = pair.second;

   if (propertyName == "disabled")
   {
      if (propertyValue.isBool())
        toggleSwitch.IsEnabled(!propertyValue.asBool());
      else if (pair.second.isNull())
        toggleSwitch.ClearValue(winrt::Control::IsEnabledProperty());
   }
   else if (propertyName == "value")
   {
     if (propertyValue.isBool())
       toggleSwitch.IsOn(propertyValue.asBool());
     else if (pair.second.isNull())
       toggleSwitch.ClearValue(winrt::ToggleSwitch::IsOnProperty());
   }
  }

  Super::UpdateProperties(nodeToUpdate, reactDiffMap);
}
void CheckBoxViewManager::UpdateProperties(ShadowNodeBase* nodeToUpdate, const folly::dynamic& reactDiffMap)
{
  auto checkbox = nodeToUpdate->GetView().as<winrt::CheckBox>();
  if (checkbox == nullptr)
    return;

  for (const auto& pair : reactDiffMap.items())
  {
    const std::string& propertyName = pair.first.getString();
    const folly::dynamic& propertyValue = pair.second;

   if (propertyName == "disabled")
   {
     if (propertyValue.isBool())
       checkbox.IsEnabled(!propertyValue.asBool());
     else if (pair.second.isNull())
       checkbox.ClearValue(winrt::Control::IsEnabledProperty());
   }
   else if (propertyName == "checked")
   {
     if (propertyValue.isBool())
       checkbox.IsChecked(propertyValue.asBool());
     else if (pair.second.isNull())
       checkbox.ClearValue(winrt::Primitives::ToggleButton::IsCheckedProperty());
   }
  }

  Super::UpdateProperties(nodeToUpdate, reactDiffMap);
}
Exemple #3
0
void
TaskCalculatorPanel::Refresh()
{
  const auto &calculated = CommonInterface::Calculated();
  const TaskStats &task_stats = calculated.ordered_task_stats;

  TCHAR buffer[32];

  if (target_button != nullptr)
    target_button->SetVisible(task_stats.has_targets);

  SetRowVisible(AAT_TIME, task_stats.has_targets);
  if (task_stats.has_targets) {
    FormatTimespanSmart(buffer, (int)protected_task_manager->GetOrderedTaskSettings().aat_min_time, 2);
    SetText(AAT_TIME, buffer);
  }

  FormatTimespanSmart(buffer, (int)task_stats.GetEstimatedTotalTime(), 2);
  SetText(AAT_ESTIMATED, buffer);

  fixed rPlanned = task_stats.total.solution_planned.IsDefined()
    ? task_stats.total.solution_planned.vector.distance
    : fixed(0);

  if (positive(rPlanned))
    LoadValue(DISTANCE, rPlanned, UnitGroup::DISTANCE);
  else
    ClearValue(DISTANCE);

  LoadValue(MC, CommonInterface::GetComputerSettings().polar.glide_polar_task.GetMC(),
            UnitGroup::VERTICAL_SPEED);
  LoadValue(EFFECTIVE_MC, emc, UnitGroup::VERTICAL_SPEED);

  if (positive(rPlanned)) {
    fixed rMax = task_stats.distance_max;
    fixed rMin = task_stats.distance_min;

    if (rMin < rMax) {
      fixed range = Double((rPlanned - rMin) / (rMax - rMin)) - fixed(1);
      LoadValue(RANGE, range * 100);
    } else
      ClearValue(RANGE);
  } else
    ClearValue(RANGE);

  if (task_stats.total.remaining_effective.IsDefined())
    LoadValue(SPEED_REMAINING, task_stats.total.remaining_effective.GetSpeed(),
              UnitGroup::TASK_SPEED);
  else
    ClearValue(SPEED_REMAINING);

  if (task_stats.total.travelled.IsDefined())
    LoadValue(SPEED_ACHIEVED, task_stats.total.travelled.GetSpeed(),
              UnitGroup::TASK_SPEED);
  else
    ClearValue(SPEED_ACHIEVED);

  LoadValue(CRUISE_EFFICIENCY, task_stats.cruise_efficiency * 100);
}
void PopupShadowNode::updateProperties(const folly::dynamic&& props)
{
  m_updating = true;
  
  auto popup = GetView().as<winrt::Popup>();
  if (popup == nullptr)
    return;

  for (auto& pair : props.items())
  {
    const std::string& propertyName = pair.first.getString();
    const folly::dynamic& propertyValue = pair.second;

    if (propertyName == "target")
    {
      if (propertyValue.isNumber())
        m_targetTag = static_cast<int64_t>(propertyValue.asDouble());
      else
        m_targetTag = -1;
    }
    else if (propertyName == "isOpen")
    {
      if (propertyValue.isBool())
        popup.IsOpen(propertyValue.getBool());
      else if (propertyValue.isNull())
        popup.ClearValue(winrt::Popup::IsOpenProperty());
    }
    else if (propertyName == "isLightDismissEnabled")
    {
      if (propertyValue.isBool())
        popup.IsLightDismissEnabled(propertyValue.getBool());
      else if (propertyValue.isNull())
        popup.ClearValue(winrt::Popup::IsLightDismissEnabledProperty());
    }
    else if (propertyName == "horizontalOffset")
    {
      if (propertyValue.isNumber())
        popup.HorizontalOffset(propertyValue.asDouble());
      else if (propertyValue.isNull())
        popup.ClearValue(winrt::Popup::HorizontalOffsetProperty());
    }
    else if (propertyName == "verticalOffset")
    {
      if (propertyValue.isNumber())
        popup.VerticalOffset(propertyValue.asDouble());
      else if (propertyValue.isNull())
        popup.ClearValue(winrt::Popup::VerticalOffsetProperty());
    }
  }

  Super::updateProperties(std::move(props));
  m_updating = false;
}
void
RulesStatusPanel::Refresh()
{
  TCHAR Temp[80];

  const DerivedInfo &calculated = CommonInterface::Calculated();
  const TaskStats &task_stats = calculated.ordered_task_stats;
  const StartStats &start_stats = task_stats.start;
  const ComputerSettings &settings = CommonInterface::GetComputerSettings();

  /// @todo proper task validity check
  SetText(ValidStart, start_stats.task_started
          ? _("Yes") : _T("No"));

  SetText(ValidFinish, task_stats.task_finished
          ? _("Yes") : _T("No"));

  if (start_stats.task_started) {
    SetText(StartTime,
            FormatLocalTimeHHMM((int)start_stats.time, settings.utc_offset));

    SetText(StartSpeed,
            FormatUserTaskSpeed(start_stats.ground_speed));

    SetText(StartHeight, FormatUserAltitude(start_stats.altitude));
  } else {
    ClearValue(StartTime);
    ClearValue(StartSpeed);
    ClearValue(StartHeight);
  }

  Temp[0] = _T('\0');
  double finish_height(0);

  if (protected_task_manager != nullptr) {
    ProtectedTaskManager::Lease task_manager(*protected_task_manager);
    const OrderedTask &task = task_manager->GetOrderedTask();
    const unsigned task_size = task.TaskSize();

    if (task_size > 0) {
      CopyString(Temp, task.GetTaskPoint(0).GetWaypoint().name.c_str(),
                 ARRAY_SIZE(Temp));
      finish_height = task.GetTaskPoint(task_size - 1).GetElevation();
    }
  }

  SetText(StartPoint, Temp);

  SetText(FinishAlt, FormatUserAltitude(finish_height));
}
Exemple #6
0
bool DropGrid::Key(dword k, int)
{
	if(IsReadOnly()) return false;

	if(drop_enter && k == K_ENTER)
		k = K_ALT_DOWN;

	switch(k)
	{
		case K_ALT_DOWN:
			Drop();
			break;
		case K_DOWN:
		case K_RIGHT:
			Change(1);
			break;
		case K_UP:
		case K_LEFT:
			Change(-1);
			break;
		case K_DELETE:
			ClearValue();
			break;
		default:
			if(searching && k >= 32 && k < 65536)
			{
				if(!list.IsOpen())
					Drop();
				list.Search(k);
			}
			return false;
	}
	return true;
}
Exemple #7
0
void DropGrid::CancelUpdate()
{
	int prevrow = list.GetPrevCursor();
	if(prevrow >= 0)
	{
		list.SetCursor(prevrow);
		UpdateValue();
		rowid = list.GetRowId(prevrow);
		Refresh();
	}
	else
		ClearValue();
}
Exemple #8
0
void DropGrid::SetData(const Value& v)
{
	int row = list.Find(v, key_col);
	if(row >= 0)
	{
		list.SetCursor(row);
		UpdateValue();
		DoAction(row, data_action, false);
		Refresh();
	}
	else
		ClearValue();
}
Exemple #9
0
void CVisProp::SetDefaultValue(const CVisDim& refdim, bool fShared)
{
	ReleaseObj();
	SetFObjReference(false);
	SetFShared(fShared);
	SetFPointerToObject(fShared || !(PropTypeInfo().CanCopyObjectBytes()));
	if (refdim.CObj() > 1)
		SetPvRefCntArray(PropTypeInfo().PRefCntArrayMake(refdim));
	else if (!FPointerToObject())
		ClearValue();
	else
		SetPvRefCntObj(PropTypeInfo().PvRefCntObjMakePvObj(0));
	SetFInitialized(true);
}
	~CTempEnvVar()
	{
		if ( m_bRestoreOriginalValue )
		{
			// Restore the original value.
			if ( m_bExisted )
			{
				SetValue( "%s", m_OriginalValue.Base() );
			}
			else
			{
				ClearValue();
			}
		}
	}
Exemple #11
0
void CVisProp::ReleaseObj(void)
{
	if (IsValid())
	{
		if (IsArray())
		{
			PropTypeInfo().ReleasePvRefCntArray(PRefCntArray());
		}
		else if (FPointerToObject())
		{
			if (IsObjReference())
				((CVisRefCntObj<void *> *) PvRefCntObj())->Release();
			else
				PropTypeInfo().ReleasePvRefCntObj(PvRefCntObj());
		}
	}
	ClearValue();
	m_fArray = false;
	SetFInitialized(false);
}
Exemple #12
0
void DropGrid::Clear()
{
	list.Clear();
	ClearValue();
}
Exemple #13
0
void DropGrid::Reset()
{
	list.Reset();
	ClearValue();
	value_cols.Clear();
}
Exemple #14
0
void DropGrid::DoClearValue()
{
	ClearValue();
	SetFocus();
}
Exemple #15
0
Error Volumetric::init(const ConfigSet& config)
{
	U width = m_r->getWidth() / VOLUMETRIC_FRACTION;
	U height = m_r->getHeight() / VOLUMETRIC_FRACTION;

	// Create RTs
	m_r->createRenderTarget(width,
		height,
		IS_COLOR_ATTACHMENT_PIXEL_FORMAT,
		TextureUsageBit::SAMPLED_FRAGMENT | TextureUsageBit::FRAMEBUFFER_ATTACHMENT_WRITE,
		SamplingFilter::LINEAR,
		1,
		m_rt);
	m_r->createRenderTarget(width,
		height,
		IS_COLOR_ATTACHMENT_PIXEL_FORMAT,
		TextureUsageBit::SAMPLED_FRAGMENT | TextureUsageBit::FRAMEBUFFER_ATTACHMENT_WRITE | TextureUsageBit::CLEAR,
		SamplingFilter::LINEAR,
		1,
		m_tmpRt);

	m_r->clearRenderTarget(m_tmpRt, ClearValue(), TextureUsageBit::SAMPLED_FRAGMENT);

	// Create shaders
	ANKI_CHECK(m_r->createShader("shaders/Volumetric.frag.glsl",
		m_frag,
		"#define RPASS_SIZE uvec2(%uu, %uu)\n"
		"#define CLUSTER_COUNT uvec3(%uu, %uu, %uu)\n",
		width,
		height,
		m_r->getIs().getLightBin().getClusterer().getClusterCountX(),
		m_r->getIs().getLightBin().getClusterer().getClusterCountY(),
		m_r->getIs().getLightBin().getClusterer().getClusterCountZ()));

	ANKI_CHECK(m_r->createShader("shaders/GaussianBlurGeneric.frag.glsl",
		m_hblurFrag,
		"#define HPASS\n"
		"#define COL_RGB\n"
		"#define TEXTURE_SIZE vec2(%f, %f)\n"
		"#define KERNEL_SIZE 11\n",
		F32(width),
		F32(height)));

	ANKI_CHECK(m_r->createShader("shaders/GaussianBlurGeneric.frag.glsl",
		m_vblurFrag,
		"#define VPASS\n"
		"#define COL_RGB\n"
		"#define TEXTURE_SIZE vec2(%f, %f)\n"
		"#define KERNEL_SIZE 11\n",
		F32(width),
		F32(height)));

	// Create pplines
	ColorStateInfo state;
	state.m_attachmentCount = 1;
	state.m_attachments[0].m_format = IS_COLOR_ATTACHMENT_PIXEL_FORMAT;

	m_r->createDrawQuadPipeline(m_frag->getGrShader(), state, m_ppline);
	m_r->createDrawQuadPipeline(m_hblurFrag->getGrShader(), state, m_hblurPpline);
	m_r->createDrawQuadPipeline(m_vblurFrag->getGrShader(), state, m_vblurPpline);

	// Create the resource groups
	ResourceGroupInitInfo rcInit;
	rcInit.m_textures[0].m_texture = m_r->getHalfDepth().m_depthRt;
	rcInit.m_textures[0].m_usage = TextureUsageBit::SAMPLED_FRAGMENT | TextureUsageBit::FRAMEBUFFER_ATTACHMENT_READ;
	rcInit.m_textures[1].m_texture = m_tmpRt;
	rcInit.m_textures[2].m_texture = m_r->getSm().getSpotTextureArray();
	rcInit.m_textures[3].m_texture = m_r->getSm().getOmniTextureArray();
	rcInit.m_uniformBuffers[0].m_uploadedMemory = true;
	rcInit.m_uniformBuffers[0].m_usage = BufferUsageBit::UNIFORM_FRAGMENT;
	rcInit.m_uniformBuffers[1].m_uploadedMemory = true;
	rcInit.m_uniformBuffers[1].m_usage = BufferUsageBit::UNIFORM_FRAGMENT;
	rcInit.m_uniformBuffers[2].m_uploadedMemory = true;
	rcInit.m_uniformBuffers[2].m_usage = BufferUsageBit::UNIFORM_FRAGMENT;
	rcInit.m_uniformBuffers[3].m_uploadedMemory = true;
	rcInit.m_uniformBuffers[3].m_usage = BufferUsageBit::UNIFORM_FRAGMENT;
	rcInit.m_storageBuffers[0].m_uploadedMemory = true;
	rcInit.m_storageBuffers[0].m_usage = BufferUsageBit::STORAGE_FRAGMENT_READ;
	rcInit.m_storageBuffers[1].m_uploadedMemory = true;
	rcInit.m_storageBuffers[1].m_usage = BufferUsageBit::STORAGE_FRAGMENT_READ;
	m_rc = getGrManager().newInstance<ResourceGroup>(rcInit);

	rcInit = ResourceGroupInitInfo();
	rcInit.m_textures[0].m_texture = m_rt;
	m_hblurRc = getGrManager().newInstance<ResourceGroup>(rcInit);

	rcInit.m_textures[0].m_texture = m_tmpRt;
	m_vblurRc = getGrManager().newInstance<ResourceGroup>(rcInit);

	// Create FBs
	FramebufferInitInfo fbInit;
	fbInit.m_colorAttachmentCount = 1;
	fbInit.m_colorAttachments[0].m_texture = m_tmpRt;
	fbInit.m_colorAttachments[0].m_loadOperation = AttachmentLoadOperation::DONT_CARE;
	fbInit.m_colorAttachments[0].m_usageInsideRenderPass = TextureUsageBit::FRAMEBUFFER_ATTACHMENT_WRITE;
	m_hblurFb = getGrManager().newInstance<Framebuffer>(fbInit);

	fbInit.m_colorAttachments[0].m_texture = m_rt;
	m_vblurFb = getGrManager().newInstance<Framebuffer>(fbInit);

	return ErrorCode::NONE;
}
Exemple #16
0
void
TaskStatusPanel::Refresh()
{
  if (protected_task_manager == nullptr)
    return;

  const DerivedInfo &calculated = CommonInterface::Calculated();
  const TaskStats &task_stats = calculated.ordered_task_stats;

  SetRowVisible(TaskTime, task_stats.has_targets);
  if (task_stats.has_targets)
    SetText(TaskTime,
            FormatSignedTimeHHMM((int)protected_task_manager->GetOrderedTaskSettings().aat_min_time));

  SetText(ETETime,
          FormatSignedTimeHHMM((int)task_stats.GetEstimatedTotalTime()));

  SetText(RemainingTime,
          FormatSignedTimeHHMM((int)task_stats.total.time_remaining_now));

  if (task_stats.total.planned.IsDefined())
    SetText(TaskDistance,
            FormatUserDistanceSmart(task_stats.total.planned.GetDistance()));
  else
    ClearText(TaskDistance);

  if (task_stats.total.remaining.IsDefined())
    SetText(RemainingDistance,
            FormatUserDistanceSmart(task_stats.total.remaining.GetDistance()));

  if (task_stats.total.planned.IsDefined())
    SetText(EstimatedSpeed,
            FormatUserTaskSpeed(task_stats.total.planned.GetSpeed()));
  else
    ClearText(EstimatedSpeed);

  if (task_stats.total.travelled.IsDefined())
    SetText(AverageSpeed,
            FormatUserTaskSpeed(task_stats.total.travelled.GetSpeed()));
  else
    ClearText(AverageSpeed);

  LoadValue(MC,
            CommonInterface::GetComputerSettings().polar.glide_polar_task.GetMC(),
            UnitGroup::VERTICAL_SPEED);

  if (task_stats.total.planned.IsDefined()) {
    auto rMax = task_stats.distance_max;
    auto rMin = task_stats.distance_min;

    if (rMin < rMax) {
      auto range = 2 * (task_stats.total.planned.GetDistance() - rMin) / (rMax - rMin) - 1;
      LoadValue(RANGE, range * 100);
    } else
      ClearValue(RANGE);
  } else
    ClearValue(RANGE);

  if (task_stats.total.remaining_effective.IsDefined())
    LoadValue(SPEED_REMAINING, task_stats.total.remaining_effective.GetSpeed(),
              UnitGroup::TASK_SPEED);
  else
    ClearValue(SPEED_REMAINING);

  LoadValue(EFFECTIVE_MC, task_stats.effective_mc, UnitGroup::VERTICAL_SPEED);

  if (task_stats.total.travelled.IsDefined())
    LoadValue(SPEED_ACHIEVED, task_stats.total.travelled.GetSpeed(),
              UnitGroup::TASK_SPEED);
  else
    ClearValue(SPEED_ACHIEVED);

  LoadValue(CRUISE_EFFICIENCY, task_stats.cruise_efficiency * 100);
}