SKYSPHERE *Copy_Skysphere(const SKYSPHERE *Old) { int i; SKYSPHERE *New; New = Create_Skysphere(); Destroy_Transform(New->Trans); *New = *Old; New->Trans = Copy_Transform(Old->Trans); if (New->Count > 0) { New->Pigments = reinterpret_cast<PIGMENT **>(POV_MALLOC(New->Count*sizeof(PIGMENT *), "skysphere pigment")); for (i = 0; i < New->Count; i++) { New->Pigments[i] = Copy_Pigment(Old->Pigments[i]); } } return (New); }
void Copy_Pigments (vector<PIGMENT*>& New, const vector<PIGMENT*>& Old) { New.resize(0); New.reserve(Old.size()); for (vector<PIGMENT*>::const_iterator i = Old.begin(); i != Old.end(); ++ i) New.push_back(Copy_Pigment(*i)); }
Camera& Camera::operator=(const Camera& src) { Assign_Vector(Location, src.Location); Assign_Vector(Direction, src.Direction); Assign_Vector(Up, src.Up); Assign_Vector(Right, src.Right); Assign_Vector(Sky, src.Sky); Assign_Vector(Look_At, src.Look_At); Assign_Vector(Focal_Point, src.Focal_Point); Focal_Distance = src.Focal_Distance; Aperture = src.Aperture; Blur_Samples = src.Blur_Samples; Blur_Samples_Min = src.Blur_Samples_Min; Confidence = src.Confidence; Variance = src.Variance; Type = src.Type; Angle = src.Angle; H_Angle = src.H_Angle; V_Angle = src.V_Angle; if (Tnormal != NULL) Destroy_Tnormal(Tnormal); Tnormal = src.Tnormal ? Copy_Tnormal(src.Tnormal) : NULL; if (Trans != NULL) Destroy_Transform(Trans); Trans = src.Trans ? Copy_Transform(src.Trans) : NULL; if (Bokeh != NULL) Destroy_Pigment(Bokeh); Bokeh = src.Bokeh ? Copy_Pigment(src.Bokeh) : NULL; for (std::vector<ObjectPtr>::iterator it = Meshes.begin(); it != Meshes.end(); it++) Destroy_Object(*it); Meshes.clear(); for (std::vector<ObjectPtr>::const_iterator it = src.Meshes.begin(); it != src.Meshes.end(); it++) Meshes.push_back(Copy_Object(*it)); Face_Distribution_Method = src.Face_Distribution_Method; Rays_Per_Pixel = src.Rays_Per_Pixel; Max_Ray_Distance = src.Max_Ray_Distance; Mesh_Index = src.Mesh_Index; for (int i = 0; i < 10; i++) { U_Xref[i] = src.U_Xref[i]; V_Xref[i] = src.V_Xref[i]; } Smooth = src.Smooth; return *this; }
BLEND_MAP_ENTRY *Copy_BMap_Entries (BLEND_MAP_ENTRY *Old, int Map_Size, int Type) { int i; BLEND_MAP_ENTRY *New; if (Old != NULL) { New = Create_BMap_Entries (Map_Size); for (i = 0; i < Map_Size; i++) { switch (Type) { case PIGMENT_TYPE: New[i].Vals.Pigment = Copy_Pigment(Old[i].Vals.Pigment); break; case NORMAL_TYPE: New[i].Vals.Tnormal = Copy_Tnormal(Old[i].Vals.Tnormal); break; case TEXTURE_TYPE: New[i].Vals.Texture = Copy_Textures(Old[i].Vals.Texture); break; case COLOUR_TYPE: case SLOPE_TYPE: New[i] = Old[i]; break; } } } else { New = NULL; } return (New); }
PIGMENT *Copy_Pigment (const PIGMENT *Old) { PIGMENT *New; if (Old != NULL) { New = Create_Pigment (); Copy_TPat_Fields (reinterpret_cast<TPATTERN *>(New), reinterpret_cast<const TPATTERN *>(Old)); if (Old->Type == PLAIN_PATTERN) New->colour = Old->colour; New->Quick_Colour = Old->Quick_Colour; New->Next = reinterpret_cast<TPATTERN *>(Copy_Pigment(reinterpret_cast<const PIGMENT *>(Old->Next))); } else { New = NULL; } return (New); }
PIGMENT *Copy_Pigment (const PIGMENT *Old) { PIGMENT *New; if (Old != NULL) { New = Create_Pigment (); Copy_TPat_Fields ((TPATTERN *)New, (const TPATTERN *)Old); if (Old->Type == PLAIN_PATTERN) New->colour = Old->colour; New->Quick_Colour = Old->Quick_Colour; New->Next = (TPATTERN *)Copy_Pigment((const PIGMENT *)Old->Next); } else { New = NULL; } return (New); }
PIGMENT *Copy_Pigment (PIGMENT *Old) { PIGMENT *New; if (Old != NULL) { New = Create_Pigment (); Copy_TPat_Fields ((TPATTERN *)New, (TPATTERN *)Old); if (Old->Type == PLAIN_PATTERN) { Assign_Colour(New->Colour,Old->Colour); } New->Next = (TPATTERN *)Copy_Pigment((PIGMENT *)Old->Next); } else { New = NULL; } return (New); }