+void NPatchRenderer::ChangeRenderer( bool oldBorderOnly, size_t oldGridX, size_t oldGridY )
+{
+ //check to see if the border style has changed
+
+ bool borderOnlyChanged = oldBorderOnly != mBorderOnly;
+ bool gridChanged = oldGridX != mStretchPixelsX.Size() || oldGridY != mStretchPixelsY.Size();
+
+ if( borderOnlyChanged || gridChanged )
+ {
+ Geometry geometry = CreateGeometry();
+ if( geometry )
+ {
+ mImpl->mRenderer.SetGeometry( geometry );
+ }
+ else
+ {
+ InitializeFromBrokenImage();
+ }
+ }
+
+ if( gridChanged )
+ {
+ Shader shader = CreateShader();
+ Material material;
+ if( shader )
+ {
+ material = mImpl->mRenderer.GetMaterial();
+ if( material )
+ {
+ material.SetShader( shader );
+ }
+ }
+
+ if( !material )
+ {
+ InitializeFromBrokenImage();
+ }
+ }
+}
+