~azzar1/unity/damage-screen-when-animating

« back to all changes in this revision

Viewing changes to unity-shared/OverlayRenderer.cpp

  • Committer: Gord Allott
  • Date: 2012-09-13 09:15:15 UTC
  • mto: This revision was merged to the branch mainline in revision 2692.
  • Revision ID: gord.allott@canonical.com-20120913091515-9cxyx9612inspi1f
lots of stuff

Show diffs side-by-side

added added

removed removed

Lines of Context:
66
66
 
67
67
 
68
68
  nux::ObjectPtr<nux::BaseTexture> bg_refine_tex_;
 
69
  nux::ObjectPtr<nux::BaseTexture> bg_refine_no_refine_tex_;
69
70
  nux::ObjectPtr<nux::BaseTexture> bg_refine_corner_tex_;
70
71
  std::unique_ptr<nux::AbstractPaintLayer> bg_refine_gradient_;
71
72
  std::unique_ptr<nux::AbstractPaintLayer> bg_refine_gradient_corner_;
74
75
  int bgs;
75
76
  bool visible;
76
77
 
 
78
  bool refine_is_open_;
 
79
 
77
80
  UBusManager ubus_manager_;
78
81
 
79
82
  OverlayRenderer *parent;
115
118
 
116
119
  nux::TexCoordXForm texxform;
117
120
  bg_refine_tex_ = unity::dash::Style::Instance().GetRefineTextureDash();
 
121
  bg_refine_no_refine_tex_ = unity::dash::Style::Instance().GetRefineNoRefineTextureDash();
 
122
  
118
123
  bg_refine_gradient_.reset(new nux::TextureLayer(bg_refine_tex_->GetDeviceTexture(), 
119
124
                            texxform, 
120
125
                            nux::color::White,
139
144
  bg_shine_texture_ = unity::dash::Style::Instance().GetDashShine()->GetDeviceTexture();
140
145
 
141
146
  ubus_manager_.SendMessage(UBUS_BACKGROUND_REQUEST_COLOUR_EMIT);
 
147
 
 
148
  ubus_manager_.RegisterInterest(UBUS_REFINE_STATUS, [this] (GVariant *data) 
 
149
  {
 
150
    gboolean status;
 
151
    g_variant_get(data, UBUS_REFINE_STATUS_FORMAT_STRING, &status);
 
152
 
 
153
    refine_is_open_ = status;
 
154
    nux::ROPConfig rop;
 
155
    rop.Blend = true;
 
156
    rop.SrcBlend = GL_ONE;
 
157
    rop.DstBlend = GL_ONE_MINUS_SRC_ALPHA;
 
158
 
 
159
    nux::TexCoordXForm texxform;
 
160
 
 
161
    if (refine_is_open_)
 
162
    {
 
163
      bg_refine_gradient_.reset(new nux::TextureLayer(bg_refine_tex_->GetDeviceTexture(), 
 
164
                                texxform, 
 
165
                                nux::color::White,
 
166
                                false,
 
167
                                rop));
 
168
    }
 
169
    else
 
170
    {
 
171
      bg_refine_gradient_.reset(new nux::TextureLayer(bg_refine_no_refine_tex_->GetDeviceTexture(),
 
172
                                texxform,
 
173
                                nux::color::White,
 
174
                                false,
 
175
                                rop));
 
176
    }
 
177
 
 
178
    parent->need_redraw.emit();
 
179
  });
142
180
}
143
181
 
144
182
void OverlayRendererImpl::OnBackgroundColorChanged(GVariant* args)
534
572
 
535
573
  gfx_context.GetRenderStates().SetBlend(true, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
536
574
  nux::TexCoordXForm refine_texxform;
537
 
  gfx_context.QRP_1Tex(larger_content_geo.x + larger_content_geo.width - bg_refine_tex_->GetWidth(), 
 
575
 
 
576
  if (refine_is_open_)
 
577
  { 
 
578
    gfx_context.QRP_1Tex(larger_content_geo.x + larger_content_geo.width - bg_refine_tex_->GetWidth(), 
538
579
                       larger_content_geo.y,
539
580
                       bg_refine_tex_->GetWidth(), 
540
581
                       bg_refine_tex_->GetHeight(),
542
583
                       refine_texxform,
543
584
                       nux::color::White
544
585
                       );
 
586
  }
 
587
  else
 
588
  {
 
589
    gfx_context.QRP_1Tex(larger_content_geo.x + larger_content_geo.width - bg_refine_no_refine_tex_->GetWidth(), 
 
590
                       larger_content_geo.y,
 
591
                       bg_refine_no_refine_tex_->GetWidth(), 
 
592
                       bg_refine_no_refine_tex_->GetHeight(),
 
593
                       bg_refine_no_refine_tex_->GetDeviceTexture(),
 
594
                       refine_texxform,
 
595
                       nux::color::White
 
596
                       );
 
597
  }
 
598
 
545
599
 
546
600
  if (Settings::Instance().GetFormFactor() != FormFactor::NETBOOK || force_edges)
547
601
  {
886
940
 
887
941
  nux::Geometry refine_geo = larger_content_geo;
888
942
  
889
 
  refine_geo.x += larger_content_geo.width - bg_refine_tex_->GetWidth();
890
 
  refine_geo.width = bg_refine_tex_->GetWidth();
891
 
  refine_geo.height = bg_refine_tex_->GetHeight();
892
 
 
 
943
  if (refine_is_open_)
 
944
  {
 
945
    refine_geo.x += larger_content_geo.width - bg_refine_tex_->GetWidth();
 
946
    refine_geo.width = bg_refine_tex_->GetWidth();
 
947
    refine_geo.height = bg_refine_tex_->GetHeight();
 
948
  }
 
949
  else
 
950
  {
 
951
    refine_geo.x += larger_content_geo.width - bg_refine_no_refine_tex_->GetWidth();
 
952
    refine_geo.width = bg_refine_no_refine_tex_->GetWidth();
 
953
    refine_geo.height = bg_refine_no_refine_tex_->GetHeight();
 
954
  }
 
955
    
893
956
  nux::GetPainter().PushLayer(gfx_context, refine_geo, bg_refine_gradient_.get());
894
 
 
895
957
  bgs++;
896
958
}
897
959