CRhinoObject* CRhinoRectangleGrips::NewObject() { UpdateRectangle(); CRhinoRectangleObject* pNewObject = 0; if (m_bGripsMoved && m_bDrawRectangle) { CRhinoRectangleObject* pOldObject = RectangleObject(); if (pOldObject) pNewObject = new CRhinoRectangleObject(*pOldObject); else pNewObject = new CRhinoRectangleObject(); ON_PolylineCurve rectangle_curve(m_rectangle); // Copy any user data from the original curve to the new curve if (pOldObject && pOldObject->Curve() && pOldObject->Curve()->FirstUserData()) rectangle_curve.CopyUserData(*pOldObject->Curve()); pNewObject->SetCurve(rectangle_curve); } return pNewObject; }
bool WebGLFramebuffer::AttachPoint::IsComplete() const { if (!HasImage()) return false; const WebGLRectangleObject& rect = RectangleObject(); if (!rect.Width() || !rect.Height()) { return false; } if (Texture()) { MOZ_ASSERT(Texture()->HasImageInfoAt(mTexImageTarget, mTexImageLevel)); const WebGLTexture::ImageInfo& imageInfo = Texture()->ImageInfoAt(mTexImageTarget, mTexImageLevel); GLenum sizedFormat = imageInfo.EffectiveInternalFormat().get(); if (mAttachmentPoint == LOCAL_GL_DEPTH_ATTACHMENT) return IsValidFBOTextureDepthFormat(sizedFormat); if (mAttachmentPoint == LOCAL_GL_STENCIL_ATTACHMENT) { // Textures can't have the correct format for stencil buffers. return false; } if (mAttachmentPoint == LOCAL_GL_DEPTH_STENCIL_ATTACHMENT) return IsValidFBOTextureDepthStencilFormat(sizedFormat); if (mAttachmentPoint >= LOCAL_GL_COLOR_ATTACHMENT0 && mAttachmentPoint <= FBAttachment(LOCAL_GL_COLOR_ATTACHMENT0 - 1 + WebGLContext::kMaxColorAttachments)) { WebGLContext* webgl = Texture()->Context(); return webgl->IsFormatValidForFB(sizedFormat); } MOZ_ASSERT(false, "Invalid WebGL attachment point?"); return false; } if (Renderbuffer()) { GLenum internalFormat = Renderbuffer()->InternalFormat(); if (mAttachmentPoint == LOCAL_GL_DEPTH_ATTACHMENT) return IsValidFBORenderbufferDepthFormat(internalFormat); if (mAttachmentPoint == LOCAL_GL_STENCIL_ATTACHMENT) return IsValidFBORenderbufferStencilFormat(internalFormat); if (mAttachmentPoint == LOCAL_GL_DEPTH_STENCIL_ATTACHMENT) return IsValidFBORenderbufferDepthStencilFormat(internalFormat); if (mAttachmentPoint >= LOCAL_GL_COLOR_ATTACHMENT0 && mAttachmentPoint <= FBAttachment(LOCAL_GL_COLOR_ATTACHMENT0 - 1 + WebGLContext::kMaxColorAttachments)) { WebGLContext* webgl = Renderbuffer()->Context(); return webgl->IsFormatValidForFB(internalFormat); } MOZ_ASSERT(false, "Invalid WebGL attachment point?"); return false; } MOZ_ASSERT(false, "Should not get here."); return false; }