+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();
+ TextureSet textureSet;
+ if( shader )
+ {
+ textureSet = mImpl->mRenderer.GetTextures();
+ if( !textureSet )
+ {
+ InitializeFromBrokenImage();
+ }
+ mImpl->mRenderer.SetShader( shader );
+ }
+ }
+}
+