Cleanup: style, use braces in source/

Automated using clang-tidy.
This commit is contained in:
2019-05-31 22:51:19 +10:00
parent 8987f7987d
commit d8dbd49a2f
290 changed files with 4326 additions and 2162 deletions

View File

@@ -807,8 +807,9 @@ int BKE_sound_scene_playing(Scene *scene)
} }
// in case of a "Null" audio device, we have no playback information // in case of a "Null" audio device, we have no playback information
if (AUD_Device_getRate(sound_device) == AUD_RATE_INVALID) if (AUD_Device_getRate(sound_device) == AUD_RATE_INVALID) {
return -1; return -1;
}
if (scene->audio.flag & AUDIO_SYNC) { if (scene->audio.flag & AUDIO_SYNC) {
return AUD_isSynchronizerPlaying(); return AUD_isSynchronizerPlaying();

View File

@@ -1043,16 +1043,21 @@ bool invert_m4_m4_fallback(float inverse[4][4], const float mat[4][4])
BLI_assert(inverse != mat); BLI_assert(inverse != mat);
/* Set inverse to identity */ /* Set inverse to identity */
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) for (j = 0; j < 4; j++) {
inverse[i][j] = 0; inverse[i][j] = 0;
for (i = 0; i < 4; i++) }
}
for (i = 0; i < 4; i++) {
inverse[i][i] = 1; inverse[i][i] = 1;
}
/* Copy original matrix so we don't mess it up */ /* Copy original matrix so we don't mess it up */
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) for (j = 0; j < 4; j++) {
tempmat[i][j] = mat[i][j]; tempmat[i][j] = mat[i][j];
}
}
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
/* Look for row with max pivot */ /* Look for row with max pivot */
@@ -1441,10 +1446,11 @@ bool is_orthonormal_m4(const float m[4][4])
if (is_orthogonal_m4(m)) { if (is_orthogonal_m4(m)) {
int i; int i;
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++) {
if (fabsf(dot_v4v4(m[i], m[i]) - 1) > 1e-5f) { if (fabsf(dot_v4v4(m[i], m[i]) - 1) > 1e-5f) {
return false; return false;
} }
}
return true; return true;
} }

View File

@@ -1256,8 +1256,9 @@ static void set_profile_params(BevelParams *bp, BevVert *bv, BoundVert *bndv)
pro->super_r = bp->pro_super_r; pro->super_r = bp->pro_super_r;
/* projection direction is direction of the edge */ /* projection direction is direction of the edge */
sub_v3_v3v3(pro->proj_dir, e->e->v1->co, e->e->v2->co); sub_v3_v3v3(pro->proj_dir, e->e->v1->co, e->e->v2->co);
if (e->is_rev) if (e->is_rev) {
negate_v3(pro->proj_dir); negate_v3(pro->proj_dir);
}
normalize_v3(pro->proj_dir); normalize_v3(pro->proj_dir);
project_to_edge(e->e, co1, co2, pro->midco); project_to_edge(e->e, co1, co2, pro->midco);
if (DEBUG_OLD_PROJ_TO_PERP_PLANE) { if (DEBUG_OLD_PROJ_TO_PERP_PLANE) {
@@ -1832,8 +1833,9 @@ static void bevel_extend_edge_data(BevVert *bv)
{ {
VMesh *vm = bv->vmesh; VMesh *vm = bv->vmesh;
if (vm->mesh_kind == M_TRI_FAN) if (vm->mesh_kind == M_TRI_FAN) {
return; return;
}
BoundVert *bcur = bv->vmesh->boundstart, *start = bcur; BoundVert *bcur = bv->vmesh->boundstart, *start = bcur;
@@ -2180,10 +2182,11 @@ static int count_bound_vert_seams(BevVert *bv)
} }
ans = 0; ans = 0;
for (i = 0; i < bv->edgecount; i++) for (i = 0; i < bv->edgecount; i++) {
if (bv->edges[i].is_seam) { if (bv->edges[i].is_seam) {
ans++; ans++;
} }
}
return ans; return ans;
} }

View File

@@ -40,12 +40,14 @@ std::string AnimationExporter::get_axis_name(std::string channel, int id)
std::map<std::string, std::vector<std::string>>::const_iterator it; std::map<std::string, std::vector<std::string>>::const_iterator it;
it = BC_COLLADA_AXIS_FROM_TYPE.find(channel); it = BC_COLLADA_AXIS_FROM_TYPE.find(channel);
if (it == BC_COLLADA_AXIS_FROM_TYPE.end()) if (it == BC_COLLADA_AXIS_FROM_TYPE.end()) {
return ""; return "";
}
const std::vector<std::string> &subchannel = it->second; const std::vector<std::string> &subchannel = it->second;
if (id >= subchannel.size()) if (id >= subchannel.size()) {
return ""; return "";
}
return subchannel[id]; return subchannel[id];
} }
@@ -71,8 +73,9 @@ void AnimationExporter::openAnimationWithClip(std::string action_id, std::string
void AnimationExporter::close_animation_container(bool has_container) void AnimationExporter::close_animation_container(bool has_container)
{ {
if (has_container) if (has_container) {
closeAnimation(); closeAnimation();
}
} }
bool AnimationExporter::exportAnimations() bool AnimationExporter::exportAnimations()
@@ -152,8 +155,9 @@ void AnimationExporter::exportAnimation(Object *ob, BCAnimationSampler &sampler)
/* Export skeletal animation (if any) */ /* Export skeletal animation (if any) */
bArmature *arm = (bArmature *)ob->data; bArmature *arm = (bArmature *)ob->data;
for (Bone *root_bone = (Bone *)arm->bonebase.first; root_bone; root_bone = root_bone->next) for (Bone *root_bone = (Bone *)arm->bonebase.first; root_bone; root_bone = root_bone->next) {
export_bone_animations_recursive(ob, root_bone, sampler); export_bone_animations_recursive(ob, root_bone, sampler);
}
} }
close_animation_container(container_is_open); close_animation_container(container_is_open);
@@ -265,8 +269,9 @@ void AnimationExporter::export_bone_animations_recursive(Object *ob,
} }
} }
for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) {
export_bone_animations_recursive(ob, child, sampler); export_bone_animations_recursive(ob, child, sampler);
}
} }
/** /**
@@ -382,15 +387,17 @@ bool AnimationExporter::is_bone_deform_group(Bone *bone)
{ {
bool is_def; bool is_def;
/* Check if current bone is deform */ /* Check if current bone is deform */
if ((bone->flag & BONE_NO_DEFORM) == 0) if ((bone->flag & BONE_NO_DEFORM) == 0) {
return true; return true;
/* Check child bones */ /* Check child bones */
}
else { else {
for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) { for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) {
/* loop through all the children until deform bone is found, and then return */ /* loop through all the children until deform bone is found, and then return */
is_def = is_bone_deform_group(child); is_def = is_bone_deform_group(child);
if (is_def) if (is_def) {
return true; return true;
}
} }
} }
/* no deform bone found in children also */ /* no deform bone found in children also */
@@ -424,10 +431,12 @@ void AnimationExporter::export_collada_curve_animation(
bool has_tangents = false; bool has_tangents = false;
std::string interpolation_id; std::string interpolation_id;
if (this->export_settings.get_keep_smooth_curves()) if (this->export_settings.get_keep_smooth_curves()) {
interpolation_id = collada_interpolation_source(curve, id, axis, &has_tangents); interpolation_id = collada_interpolation_source(curve, id, axis, &has_tangents);
else }
else {
interpolation_id = collada_linear_interpolation_source(frames.size(), id); interpolation_id = collada_linear_interpolation_source(frames.size(), id);
}
std::string intangent_id; std::string intangent_id;
std::string outtangent_id; std::string outtangent_id;
@@ -803,8 +812,9 @@ const std::string AnimationExporter::get_collada_name(std::string channel_target
std::map<std::string, std::string>::iterator name_it = BC_CHANNEL_BLENDER_TO_COLLADA.find( std::map<std::string, std::string>::iterator name_it = BC_CHANNEL_BLENDER_TO_COLLADA.find(
channel_target); channel_target);
if (name_it == BC_CHANNEL_BLENDER_TO_COLLADA.end()) if (name_it == BC_CHANNEL_BLENDER_TO_COLLADA.end()) {
return ""; return "";
}
std::string tm_name = name_it->second; std::string tm_name = name_it->second;
return tm_name; return tm_name;
@@ -823,12 +833,15 @@ std::string AnimationExporter::get_collada_sid(const BCAnimationCurve &curve,
bool is_angle = curve.is_rotation_curve(); bool is_angle = curve.is_rotation_curve();
if (tm_name.size()) { if (tm_name.size()) {
if (is_angle) if (is_angle) {
return tm_name + std::string(axis_name) + ".ANGLE"; return tm_name + std::string(axis_name) + ".ANGLE";
else if (axis_name != "") }
else if (axis_name != "") {
return tm_name + "." + std::string(axis_name); return tm_name + "." + std::string(axis_name);
else }
else {
return tm_name; return tm_name;
}
} }
return tm_name; return tm_name;

View File

@@ -185,10 +185,12 @@ void AnimationImporter::add_fcurves_to_object(Main *bmain,
{ {
bAction *act; bAction *act;
if (!ob->adt || !ob->adt->action) if (!ob->adt || !ob->adt->action) {
act = verify_adt_action(bmain, (ID *)&ob->id, 1); act = verify_adt_action(bmain, (ID *)&ob->id, 1);
else }
else {
act = ob->adt->action; act = ob->adt->action;
}
std::vector<FCurve *>::iterator it; std::vector<FCurve *>::iterator it;
int i; int i;
@@ -206,10 +208,12 @@ void AnimationImporter::add_fcurves_to_object(Main *bmain,
FCurve *fcu = *it; FCurve *fcu = *it;
fcu->rna_path = BLI_strdupn(rna_path, strlen(rna_path)); fcu->rna_path = BLI_strdupn(rna_path, strlen(rna_path));
if (array_index == -1) if (array_index == -1) {
fcu->array_index = i; fcu->array_index = i;
else }
else {
fcu->array_index = array_index; fcu->array_index = array_index;
}
if (ob->type == OB_ARMATURE) { if (ob->type == OB_ARMATURE) {
bActionGroup *grp = NULL; bActionGroup *grp = NULL;
@@ -256,11 +260,14 @@ void AnimationImporter::add_fcurves_to_object(Main *bmain,
AnimationImporter::~AnimationImporter() AnimationImporter::~AnimationImporter()
{ {
/* free unused FCurves */ /* free unused FCurves */
for (std::vector<FCurve *>::iterator it = unused_curves.begin(); it != unused_curves.end(); it++) for (std::vector<FCurve *>::iterator it = unused_curves.begin(); it != unused_curves.end();
it++) {
free_fcurve(*it); free_fcurve(*it);
}
if (unused_curves.size()) if (unused_curves.size()) {
fprintf(stderr, "removed %d unused curves\n", (int)unused_curves.size()); fprintf(stderr, "removed %d unused curves\n", (int)unused_curves.size());
}
} }
bool AnimationImporter::write_animation(const COLLADAFW::Animation *anim) bool AnimationImporter::write_animation(const COLLADAFW::Animation *anim)
@@ -444,10 +451,12 @@ void AnimationImporter::modify_fcurve(std::vector<FCurve *> *curves,
FCurve *fcu = *it; FCurve *fcu = *it;
fcu->rna_path = BLI_strdup(rna_path); fcu->rna_path = BLI_strdup(rna_path);
if (array_index == -1) if (array_index == -1) {
fcu->array_index = i; fcu->array_index = i;
else }
else {
fcu->array_index = array_index; fcu->array_index = array_index;
}
fcurve_is_used(fcu); fcurve_is_used(fcu);
} }
@@ -473,8 +482,9 @@ void AnimationImporter::find_frames(std::vector<float> *frames, std::vector<FCur
/* get frame value from bezTriple */ /* get frame value from bezTriple */
float fra = fcu->bezt[k].vec[1][0]; float fra = fcu->bezt[k].vec[1][0];
/* if frame already not added add frame to frames */ /* if frame already not added add frame to frames */
if (std::find(frames->begin(), frames->end(), fra) == frames->end()) if (std::find(frames->begin(), frames->end(), fra) == frames->end()) {
frames->push_back(fra); frames->push_back(fra);
}
} }
} }
} }
@@ -508,10 +518,12 @@ void AnimationImporter::Assign_transform_animations(
case COLLADAFW::Transformation::TRANSLATE: case COLLADAFW::Transformation::TRANSLATE:
case COLLADAFW::Transformation::SCALE: { case COLLADAFW::Transformation::SCALE: {
bool loc = tm_type == COLLADAFW::Transformation::TRANSLATE; bool loc = tm_type == COLLADAFW::Transformation::TRANSLATE;
if (is_joint) if (is_joint) {
BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, loc ? "location" : "scale"); BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, loc ? "location" : "scale");
else }
else {
BLI_strncpy(rna_path, loc ? "location" : "scale", sizeof(rna_path)); BLI_strncpy(rna_path, loc ? "location" : "scale", sizeof(rna_path));
}
switch (binding->animationClass) { switch (binding->animationClass) {
case COLLADAFW::AnimationList::POSITION_X: case COLLADAFW::AnimationList::POSITION_X:
@@ -537,17 +549,20 @@ void AnimationImporter::Assign_transform_animations(
} }
case COLLADAFW::Transformation::ROTATE: { case COLLADAFW::Transformation::ROTATE: {
if (is_joint) if (is_joint) {
BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_euler", joint_path); BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_euler", joint_path);
else }
else {
BLI_strncpy(rna_path, "rotation_euler", sizeof(rna_path)); BLI_strncpy(rna_path, "rotation_euler", sizeof(rna_path));
}
std::vector<FCurve *>::iterator iter; std::vector<FCurve *>::iterator iter;
for (iter = curves->begin(); iter != curves->end(); iter++) { for (iter = curves->begin(); iter != curves->end(); iter++) {
FCurve *fcu = *iter; FCurve *fcu = *iter;
/* if transform is rotation the fcurves values must be turned in to radian. */ /* if transform is rotation the fcurves values must be turned in to radian. */
if (is_rotation) if (is_rotation) {
fcurve_deg_to_rad(fcu); fcurve_deg_to_rad(fcu);
}
} }
COLLADAFW::Rotate *rot = (COLLADAFW::Rotate *)transform; COLLADAFW::Rotate *rot = (COLLADAFW::Rotate *)transform;
COLLADABU::Math::Vector3 &axis = rot->getRotationAxis(); COLLADABU::Math::Vector3 &axis = rot->getRotationAxis();
@@ -563,8 +578,9 @@ void AnimationImporter::Assign_transform_animations(
else if (COLLADABU::Math::Vector3::UNIT_Z == axis) { else if (COLLADABU::Math::Vector3::UNIT_Z == axis) {
modify_fcurve(curves, rna_path, 2); modify_fcurve(curves, rna_path, 2);
} }
else else {
unused_fcurve(curves); unused_fcurve(curves);
}
break; break;
case COLLADAFW::AnimationList::AXISANGLE: case COLLADAFW::AnimationList::AXISANGLE:
/* TODO convert axis-angle to quat? or XYZ? */ /* TODO convert axis-angle to quat? or XYZ? */
@@ -767,8 +783,9 @@ void AnimationImporter::apply_matrix_curves(Object *ob,
bool is_joint = node->getType() == COLLADAFW::Node::JOINT; bool is_joint = node->getType() == COLLADAFW::Node::JOINT;
const char *bone_name = is_joint ? bc_get_joint_name(node) : NULL; const char *bone_name = is_joint ? bc_get_joint_name(node) : NULL;
char joint_path[200]; char joint_path[200];
if (is_joint) if (is_joint) {
armature_importer->get_rna_path_for_joint(node, joint_path, sizeof(joint_path)); armature_importer->get_rna_path_for_joint(node, joint_path, sizeof(joint_path));
}
std::vector<float> frames; std::vector<float> frames;
find_frames(&frames, &animcurves); find_frames(&frames, &animcurves);
@@ -812,16 +829,19 @@ void AnimationImporter::apply_matrix_curves(Object *ob,
axis = i - 7; axis = i - 7;
} }
if (is_joint) if (is_joint) {
BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str); BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str);
else }
else {
BLI_strncpy(rna_path, tm_str, sizeof(rna_path)); BLI_strncpy(rna_path, tm_str, sizeof(rna_path));
}
newcu[i] = create_fcurve(axis, rna_path); newcu[i] = create_fcurve(axis, rna_path);
newcu[i]->totvert = frames.size(); newcu[i]->totvert = frames.size();
} }
if (frames.size() == 0) if (frames.size() == 0) {
return; return;
}
std::sort(frames.begin(), frames.end()); std::sort(frames.begin(), frames.end());
@@ -872,12 +892,15 @@ void AnimationImporter::apply_matrix_curves(Object *ob,
/* add keys */ /* add keys */
for (int i = 0; i < totcu; i++) { for (int i = 0; i < totcu; i++) {
if (i < 4) if (i < 4) {
add_bezt(newcu[i], fra, rot[i]); add_bezt(newcu[i], fra, rot[i]);
else if (i < 7) }
else if (i < 7) {
add_bezt(newcu[i], fra, loc[i - 4]); add_bezt(newcu[i], fra, loc[i - 4]);
else }
else {
add_bezt(newcu[i], fra, scale[i - 7]); add_bezt(newcu[i], fra, scale[i - 7]);
}
} }
} }
Main *bmain = CTX_data_main(mContext); Main *bmain = CTX_data_main(mContext);
@@ -887,10 +910,12 @@ void AnimationImporter::apply_matrix_curves(Object *ob,
/* add curves */ /* add curves */
for (int i = 0; i < totcu; i++) { for (int i = 0; i < totcu; i++) {
if (is_joint) if (is_joint) {
add_bone_fcurve(ob, node, newcu[i]); add_bone_fcurve(ob, node, newcu[i]);
else }
else {
BLI_addtail(curves, newcu[i]); BLI_addtail(curves, newcu[i]);
}
#if 0 #if 0
fcurve_is_used(newcu[i]); /* never added to unused */ fcurve_is_used(newcu[i]); /* never added to unused */
#endif #endif
@@ -929,10 +954,12 @@ static const double get_aspect_ratio(const COLLADAFW::Camera *camera)
} }
else { else {
const double xfov = camera->getXFov().getValue(); const double xfov = camera->getXFov().getValue();
if (xfov == 0) if (xfov == 0) {
aspect = 1; aspect = 1;
else }
else {
aspect = xfov / yfov; aspect = xfov / yfov;
}
} }
} }
return aspect; return aspect;
@@ -941,10 +968,12 @@ static const double get_aspect_ratio(const COLLADAFW::Camera *camera)
static ListBase &get_animation_curves(Main *bmain, Material *ma) static ListBase &get_animation_curves(Main *bmain, Material *ma)
{ {
bAction *act; bAction *act;
if (!ma->adt || !ma->adt->action) if (!ma->adt || !ma->adt->action) {
act = verify_adt_action(bmain, (ID *)&ma->id, 1); act = verify_adt_action(bmain, (ID *)&ma->id, 1);
else }
else {
act = ma->adt->action; act = ma->adt->action;
}
return act->curves; return act->curves;
} }
@@ -961,10 +990,12 @@ void AnimationImporter::translate_Animations(
COLLADAFW::Node *root = root_map.find(uid) == root_map.end() ? node : root_map[uid]; COLLADAFW::Node *root = root_map.find(uid) == root_map.end() ? node : root_map[uid];
Object *ob; Object *ob;
if (is_joint) if (is_joint) {
ob = armature_importer->get_armature_for_joint(root); ob = armature_importer->get_armature_for_joint(root);
else }
else {
ob = object_map.find(uid) == object_map.end() ? NULL : object_map.find(uid)->second; ob = object_map.find(uid) == object_map.end() ? NULL : object_map.find(uid)->second;
}
if (!ob) { if (!ob) {
fprintf(stderr, "cannot find Object for Node with id=\"%s\"\n", node->getOriginalId().c_str()); fprintf(stderr, "cannot find Object for Node with id=\"%s\"\n", node->getOriginalId().c_str());
@@ -979,14 +1010,16 @@ void AnimationImporter::translate_Animations(
/* const char *bone_name = is_joint ? bc_get_joint_name(node) : NULL; */ /* UNUSED */ /* const char *bone_name = is_joint ? bc_get_joint_name(node) : NULL; */ /* UNUSED */
char joint_path[200]; char joint_path[200];
if (is_joint) if (is_joint) {
armature_importer->get_rna_path_for_joint(node, joint_path, sizeof(joint_path)); armature_importer->get_rna_path_for_joint(node, joint_path, sizeof(joint_path));
}
if (!ob->adt || !ob->adt->action) if (!ob->adt || !ob->adt->action) {
act = verify_adt_action(bmain, (ID *)&ob->id, 1); act = verify_adt_action(bmain, (ID *)&ob->id, 1);
}
else else {
act = ob->adt->action; act = ob->adt->action;
}
/* Get the list of animation curves of the object */ /* Get the list of animation curves of the object */
ListBase *AnimCurves = &(act->curves); ListBase *AnimCurves = &(act->curves);
@@ -1049,10 +1082,12 @@ void AnimationImporter::translate_Animations(
if ((animType->light) != 0) { if ((animType->light) != 0) {
Light *lamp = (Light *)ob->data; Light *lamp = (Light *)ob->data;
if (!lamp->adt || !lamp->adt->action) if (!lamp->adt || !lamp->adt->action) {
act = verify_adt_action(bmain, (ID *)&lamp->id, 1); act = verify_adt_action(bmain, (ID *)&lamp->id, 1);
else }
else {
act = lamp->adt->action; act = lamp->adt->action;
}
ListBase *AnimCurves = &(act->curves); ListBase *AnimCurves = &(act->curves);
const COLLADAFW::InstanceLightPointerArray &nodeLights = node->getInstanceLights(); const COLLADAFW::InstanceLightPointerArray &nodeLights = node->getInstanceLights();
@@ -1085,10 +1120,12 @@ void AnimationImporter::translate_Animations(
if (animType->camera != 0) { if (animType->camera != 0) {
Camera *cam = (Camera *)ob->data; Camera *cam = (Camera *)ob->data;
if (!cam->adt || !cam->adt->action) if (!cam->adt || !cam->adt->action) {
act = verify_adt_action(bmain, (ID *)&cam->id, 1); act = verify_adt_action(bmain, (ID *)&cam->id, 1);
else }
else {
act = cam->adt->action; act = cam->adt->action;
}
ListBase *AnimCurves = &(act->curves); ListBase *AnimCurves = &(act->curves);
const COLLADAFW::InstanceCameraPointerArray &nodeCameras = node->getInstanceCameras(); const COLLADAFW::InstanceCameraPointerArray &nodeCameras = node->getInstanceCameras();
@@ -1139,10 +1176,12 @@ void AnimationImporter::translate_Animations(
if (animType->material != 0) { if (animType->material != 0) {
Material *ma = give_current_material(ob, 1); Material *ma = give_current_material(ob, 1);
if (!ma->adt || !ma->adt->action) if (!ma->adt || !ma->adt->action) {
act = verify_adt_action(bmain, (ID *)&ma->id, 1); act = verify_adt_action(bmain, (ID *)&ma->id, 1);
else }
else {
act = ma->adt->action; act = ma->adt->action;
}
const COLLADAFW::InstanceGeometryPointerArray &nodeGeoms = node->getInstanceGeometries(); const COLLADAFW::InstanceGeometryPointerArray &nodeGeoms = node->getInstanceGeometries();
for (unsigned int i = 0; i < nodeGeoms.getCount(); i++) { for (unsigned int i = 0; i < nodeGeoms.getCount(); i++) {
@@ -1260,8 +1299,9 @@ void AnimationImporter::add_bone_animation_sampled(Object *ob,
newcu[i]->totvert = frames.size(); newcu[i]->totvert = frames.size();
} }
if (frames.size() == 0) if (frames.size() == 0) {
return; return;
}
std::sort(frames.begin(), frames.end()); std::sort(frames.begin(), frames.end());
@@ -1308,12 +1348,15 @@ void AnimationImporter::add_bone_animation_sampled(Object *ob,
/* add keys */ /* add keys */
for (int i = 0; i < totcu; i++) { for (int i = 0; i < totcu; i++) {
if (i < 4) if (i < 4) {
add_bezt(newcu[i], fra, rot[i]); add_bezt(newcu[i], fra, rot[i]);
else if (i < 7) }
else if (i < 7) {
add_bezt(newcu[i], fra, loc[i - 4]); add_bezt(newcu[i], fra, loc[i - 4]);
else }
else {
add_bezt(newcu[i], fra, scale[i - 7]); add_bezt(newcu[i], fra, scale[i - 7]);
}
} }
} }
Main *bmain = CTX_data_main(mContext); Main *bmain = CTX_data_main(mContext);
@@ -1364,8 +1407,9 @@ AnimationImporter::AnimMix *AnimationImporter::get_animation_type(
types->light = setAnimType(&(light->getFallOffAngle()), (types->light), LIGHT_FOA); types->light = setAnimType(&(light->getFallOffAngle()), (types->light), LIGHT_FOA);
types->light = setAnimType(&(light->getFallOffExponent()), (types->light), LIGHT_FOE); types->light = setAnimType(&(light->getFallOffExponent()), (types->light), LIGHT_FOE);
if (types->light != 0) if (types->light != 0) {
break; break;
}
} }
const COLLADAFW::InstanceCameraPointerArray &nodeCameras = node->getInstanceCameras(); const COLLADAFW::InstanceCameraPointerArray &nodeCameras = node->getInstanceCameras();
@@ -1395,8 +1439,9 @@ AnimationImporter::AnimMix *AnimationImporter::get_animation_type(
types->camera = setAnimType(&(camera->getFarClippingPlane()), (types->camera), CAMERA_ZFAR); types->camera = setAnimType(&(camera->getFarClippingPlane()), (types->camera), CAMERA_ZFAR);
types->camera = setAnimType(&(camera->getNearClippingPlane()), (types->camera), CAMERA_ZNEAR); types->camera = setAnimType(&(camera->getNearClippingPlane()), (types->camera), CAMERA_ZNEAR);
if (types->camera != 0) if (types->camera != 0) {
break; break;
}
} }
const COLLADAFW::InstanceGeometryPointerArray &nodeGeoms = node->getInstanceGeometries(); const COLLADAFW::InstanceGeometryPointerArray &nodeGeoms = node->getInstanceGeometries();
@@ -1431,10 +1476,12 @@ int AnimationImporter::setAnimType(const COLLADAFW::Animatable *prop, int types,
{ {
int anim_type; int anim_type;
const COLLADAFW::UniqueId &listid = prop->getAnimationList(); const COLLADAFW::UniqueId &listid = prop->getAnimationList();
if (animlist_map.find(listid) != animlist_map.end()) if (animlist_map.find(listid) != animlist_map.end()) {
anim_type = types | addition; anim_type = types | addition;
else }
else {
anim_type = types; anim_type = types;
}
return anim_type; return anim_type;
} }
@@ -1480,15 +1527,17 @@ void AnimationImporter::find_frames_old(std::vector<float> *frames,
FCurve *fcu = *iter; FCurve *fcu = *iter;
/* if transform is rotation the fcurves values must be turned in to radian. */ /* if transform is rotation the fcurves values must be turned in to radian. */
if (is_rotation) if (is_rotation) {
fcurve_deg_to_rad(fcu); fcurve_deg_to_rad(fcu);
}
for (unsigned int k = 0; k < fcu->totvert; k++) { for (unsigned int k = 0; k < fcu->totvert; k++) {
/* get frame value from bezTriple */ /* get frame value from bezTriple */
float fra = fcu->bezt[k].vec[1][0]; float fra = fcu->bezt[k].vec[1][0];
/* if frame already not added add frame to frames */ /* if frame already not added add frame to frames */
if (std::find(frames->begin(), frames->end(), fra) == frames->end()) if (std::find(frames->begin(), frames->end(), fra) == frames->end()) {
frames->push_back(fra); frames->push_back(fra);
}
} }
} }
} }
@@ -1560,8 +1609,9 @@ Object *AnimationImporter::translate_animation_OLD(
job = get_joint_object(root, node, par_job); job = get_joint_object(root, node, par_job);
#endif #endif
if (frames.size() == 0) if (frames.size() == 0) {
return job; return job;
}
std::sort(frames.begin(), frames.end()); std::sort(frames.begin(), frames.end());
@@ -1585,8 +1635,9 @@ Object *AnimationImporter::translate_animation_OLD(
char rna_path[200]; char rna_path[200];
char joint_path[200]; char joint_path[200];
if (is_joint) if (is_joint) {
armature_importer->get_rna_path_for_joint(node, joint_path, sizeof(joint_path)); armature_importer->get_rna_path_for_joint(node, joint_path, sizeof(joint_path));
}
/* new curves */ /* new curves */
FCurve *newcu[10]; /* if tm_type is matrix, then create 10 curves: 4 rot, 3 loc, 3 scale */ FCurve *newcu[10]; /* if tm_type is matrix, then create 10 curves: 4 rot, 3 loc, 3 scale */
@@ -1611,10 +1662,12 @@ Object *AnimationImporter::translate_animation_OLD(
} }
} }
if (is_joint) if (is_joint) {
BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str); BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str);
else }
else {
BLI_strncpy(rna_path, tm_str, sizeof(rna_path)); BLI_strncpy(rna_path, tm_str, sizeof(rna_path));
}
newcu[i] = create_fcurve(axis, rna_path); newcu[i] = create_fcurve(axis, rna_path);
#ifdef ARMATURE_TEST #ifdef ARMATURE_TEST
@@ -1683,12 +1736,15 @@ Object *AnimationImporter::translate_animation_OLD(
/* add keys */ /* add keys */
for (i = 0; i < totcu; i++) { for (i = 0; i < totcu; i++) {
if (is_matrix) { if (is_matrix) {
if (i < 4) if (i < 4) {
add_bezt(newcu[i], fra, rot[i]); add_bezt(newcu[i], fra, rot[i]);
else if (i < 7) }
else if (i < 7) {
add_bezt(newcu[i], fra, loc[i - 4]); add_bezt(newcu[i], fra, loc[i - 4]);
else }
else {
add_bezt(newcu[i], fra, scale[i - 7]); add_bezt(newcu[i], fra, scale[i - 7]);
}
} }
else { else {
add_bezt(newcu[i], fra, val[i]); add_bezt(newcu[i], fra, val[i]);
@@ -1739,10 +1795,12 @@ Object *AnimationImporter::translate_animation_OLD(
/* add curves */ /* add curves */
for (i = 0; i < totcu; i++) { for (i = 0; i < totcu; i++) {
if (is_joint) if (is_joint) {
add_bone_fcurve(ob, node, newcu[i]); add_bone_fcurve(ob, node, newcu[i]);
else }
else {
BLI_addtail(curves, newcu[i]); BLI_addtail(curves, newcu[i]);
}
#ifdef ARMATURE_TEST #ifdef ARMATURE_TEST
if (is_joint) if (is_joint)
@@ -1839,8 +1897,9 @@ bool AnimationImporter::evaluate_animation(COLLADAFW::Transformation *tm,
return false; return false;
} }
if (animlist_map.find(listid) == animlist_map.end()) if (animlist_map.find(listid) == animlist_map.end()) {
return false; return false;
}
const COLLADAFW::AnimationList *animlist = animlist_map[listid]; const COLLADAFW::AnimationList *animlist = animlist_map[listid];
const COLLADAFW::AnimationList::AnimationBindings &bindings = animlist->getAnimationBindings(); const COLLADAFW::AnimationList::AnimationBindings &bindings = animlist->getAnimationBindings();
@@ -1851,10 +1910,12 @@ bool AnimationImporter::evaluate_animation(COLLADAFW::Transformation *tm,
bool is_scale = (type == COLLADAFW::Transformation::SCALE); bool is_scale = (type == COLLADAFW::Transformation::SCALE);
bool is_translate = (type == COLLADAFW::Transformation::TRANSLATE); bool is_translate = (type == COLLADAFW::Transformation::TRANSLATE);
if (is_scale) if (is_scale) {
dae_scale_to_v3(tm, vec); dae_scale_to_v3(tm, vec);
else if (is_translate) }
else if (is_translate) {
dae_translate_to_v3(tm, vec); dae_translate_to_v3(tm, vec);
}
for (unsigned int index = 0; index < bindings.getCount(); index++) { for (unsigned int index = 0; index < bindings.getCount(); index++) {
const COLLADAFW::AnimationList::AnimationBinding &binding = bindings[index]; const COLLADAFW::AnimationList::AnimationBinding &binding = bindings[index];
@@ -1903,10 +1964,12 @@ bool AnimationImporter::evaluate_animation(COLLADAFW::Transformation *tm,
bool is_xyz = animclass == COLLADAFW::AnimationList::POSITION_XYZ; bool is_xyz = animclass == COLLADAFW::AnimationList::POSITION_XYZ;
if ((!is_xyz && curves.size() != 1) || (is_xyz && curves.size() != 3)) { if ((!is_xyz && curves.size() != 1) || (is_xyz && curves.size() != 3)) {
if (is_xyz) if (is_xyz) {
fprintf(stderr, "%s: expected 3 curves, got %d\n", path, (int)curves.size()); fprintf(stderr, "%s: expected 3 curves, got %d\n", path, (int)curves.size());
else }
else {
fprintf(stderr, "%s: expected 1 curve, got %d\n", path, (int)curves.size()); fprintf(stderr, "%s: expected 1 curve, got %d\n", path, (int)curves.size());
}
return false; return false;
} }
@@ -1955,10 +2018,12 @@ bool AnimationImporter::evaluate_animation(COLLADAFW::Transformation *tm,
} }
} }
if (is_scale) if (is_scale) {
size_to_mat4(mat, vec); size_to_mat4(mat, vec);
else }
else {
copy_v3_v3(mat[3], vec); copy_v3_v3(mat[3], vec);
}
return is_scale || is_translate; return is_scale || is_translate;
} }
@@ -2009,8 +2074,9 @@ bool AnimationImporter::calc_joint_parent_mat_rest(float mat[4][4],
COLLADAFW::NodePointerArray &children = node->getChildNodes(); COLLADAFW::NodePointerArray &children = node->getChildNodes();
for (unsigned int i = 0; i < children.getCount(); i++) { for (unsigned int i = 0; i < children.getCount(); i++) {
if (calc_joint_parent_mat_rest(mat, m, children[i], end)) if (calc_joint_parent_mat_rest(mat, m, children[i], end)) {
return true; return true;
}
} }
return false; return false;

View File

@@ -94,8 +94,9 @@ bool ArmatureExporter::add_instance_controller(Object *ob)
ins.setUrl(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, controller_id)); ins.setUrl(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, controller_id));
Mesh *me = (Mesh *)ob->data; Mesh *me = (Mesh *)ob->data;
if (!me->dvert) if (!me->dvert) {
return false; return false;
}
// write root bone URLs // write root bone URLs
Bone *bone; Bone *bone;
@@ -234,8 +235,9 @@ void ArmatureExporter::add_bone_node(Bone *bone,
copy_m4_m4(ob->parentinv, backup_parinv); copy_m4_m4(ob->parentinv, backup_parinv);
iter = child_objects.erase(iter); iter = child_objects.erase(iter);
} }
else else {
iter++; iter++;
}
} }
for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) { for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) {

View File

@@ -105,8 +105,9 @@ int ArmatureImporter::create_bone(SkinInfo *skin,
/* Checking if bone is already made. */ /* Checking if bone is already made. */
std::vector<COLLADAFW::Node *>::iterator it; std::vector<COLLADAFW::Node *>::iterator it;
it = std::find(finished_joints.begin(), finished_joints.end(), node); it = std::find(finished_joints.begin(), finished_joints.end(), node);
if (it != finished_joints.end()) if (it != finished_joints.end()) {
return chain_length; return chain_length;
}
EditBone *bone = ED_armature_ebone_add(arm, bc_get_joint_name(node)); EditBone *bone = ED_armature_ebone_add(arm, bc_get_joint_name(node));
totbone++; totbone++;
@@ -143,15 +144,17 @@ int ArmatureImporter::create_bone(SkinInfo *skin,
get_node_mat(mat, node, NULL, NULL, parent_mat); get_node_mat(mat, node, NULL, NULL, parent_mat);
} }
if (parent) if (parent) {
bone->parent = parent; bone->parent = parent;
}
float loc[3], size[3], rot[3][3]; float loc[3], size[3], rot[3][3];
BoneExtensionMap &extended_bones = bone_extension_manager.getExtensionMap(arm); BoneExtensionMap &extended_bones = bone_extension_manager.getExtensionMap(arm);
BoneExtended &be = add_bone_extended(bone, node, totchild, layer_labels, extended_bones); BoneExtended &be = add_bone_extended(bone, node, totchild, layer_labels, extended_bones);
int layer = be.get_bone_layers(); int layer = be.get_bone_layers();
if (layer) if (layer) {
bone->layer = layer; bone->layer = layer;
}
arm->layer |= layer; // ensure that all populated bone layers are visible after import arm->layer |= layer; // ensure that all populated bone layers are visible after import
float *tail = be.get_tail(); float *tail = be.get_tail();
@@ -205,8 +208,9 @@ int ArmatureImporter::create_bone(SkinInfo *skin,
for (unsigned int i = 0; i < children.getCount(); i++) { for (unsigned int i = 0; i < children.getCount(); i++) {
int cl = create_bone(skin, children[i], bone, children.getCount(), mat, arm, layer_labels); int cl = create_bone(skin, children[i], bone, children.getCount(), mat, arm, layer_labels);
if (cl > chain_length) if (cl > chain_length) {
chain_length = cl; chain_length = cl;
}
} }
bone->length = len_v3v3(bone->head, bone->tail); bone->length = len_v3v3(bone->head, bone->tail);
@@ -228,8 +232,9 @@ void ArmatureImporter::fix_leaf_bone_hierarchy(bArmature *armature,
Bone *bone, Bone *bone,
bool fix_orientation) bool fix_orientation)
{ {
if (bone == NULL) if (bone == NULL) {
return; return;
}
if (bc_is_leaf_bone(bone)) { if (bc_is_leaf_bone(bone)) {
BoneExtensionMap &extended_bones = bone_extension_manager.getExtensionMap(armature); BoneExtensionMap &extended_bones = bone_extension_manager.getExtensionMap(armature);
@@ -276,8 +281,9 @@ void ArmatureImporter::fix_leaf_bone(bArmature *armature,
void ArmatureImporter::fix_parent_connect(bArmature *armature, Bone *bone) void ArmatureImporter::fix_parent_connect(bArmature *armature, Bone *bone)
{ {
/* armature has no bones */ /* armature has no bones */
if (bone == NULL) if (bone == NULL) {
return; return;
}
if (bone->parent && bone->flag & BONE_CONNECTED) { if (bone->parent && bone->flag & BONE_CONNECTED) {
copy_v3_v3(bone->parent->tail, bone->head); copy_v3_v3(bone->parent->tail, bone->head);
@@ -294,8 +300,9 @@ void ArmatureImporter::connect_bone_chains(bArmature *armature, Bone *parentbone
BoneExtended *dominant_child = NULL; BoneExtended *dominant_child = NULL;
int maxlen = 0; int maxlen = 0;
if (parentbone == NULL) if (parentbone == NULL) {
return; return;
}
Bone *child = (Bone *)parentbone->childbase.first; Bone *child = (Bone *)parentbone->childbase.first;
if (child && (import_settings->find_chains || child->next == NULL)) { if (child && (import_settings->find_chains || child->next == NULL)) {
@@ -356,8 +363,9 @@ void ArmatureImporter::connect_bone_chains(bArmature *armature, Bone *parentbone
} }
else { else {
/* can't connect this Bone. Proceed with children ... */ /* can't connect this Bone. Proceed with children ... */
if (pbe) if (pbe) {
pbe->set_leaf_bone(true); pbe->set_leaf_bone(true);
}
for (Bone *ch = (Bone *)parentbone->childbase.first; ch; ch = ch->next) { for (Bone *ch = (Bone *)parentbone->childbase.first; ch; ch = ch->next) {
ArmatureImporter::connect_bone_chains(armature, ch, UNLIMITED_CHAIN_MAX); ArmatureImporter::connect_bone_chains(armature, ch, UNLIMITED_CHAIN_MAX);
} }
@@ -417,8 +425,9 @@ void ArmatureImporter::set_euler_rotmode()
Object *ArmatureImporter::get_empty_for_leaves() Object *ArmatureImporter::get_empty_for_leaves()
{ {
if (empty) if (empty) {
return empty; return empty;
}
empty = bc_add_object(m_bmain, scene, view_layer, OB_EMPTY, NULL); empty = bc_add_object(m_bmain, scene, view_layer, OB_EMPTY, NULL);
empty->empty_drawtype = OB_EMPTY_SPHERE; empty->empty_drawtype = OB_EMPTY_SPHERE;
@@ -467,16 +476,19 @@ void ArmatureImporter::create_armature_bones(Main *bmain, std::vector<Object *>
/* if there is an armature created for root_joint next root_joint */ /* if there is an armature created for root_joint next root_joint */
for (ri = root_joints.begin(); ri != root_joints.end(); ri++) { for (ri = root_joints.begin(); ri != root_joints.end(); ri++) {
if (get_armature_for_joint(*ri) != NULL) if (get_armature_for_joint(*ri) != NULL) {
continue; continue;
}
Object *ob_arm = joint_parent_map[(*ri)->getUniqueId()]; Object *ob_arm = joint_parent_map[(*ri)->getUniqueId()];
if (!ob_arm) if (!ob_arm) {
continue; continue;
}
bArmature *armature = (bArmature *)ob_arm->data; bArmature *armature = (bArmature *)ob_arm->data;
if (!armature) if (!armature) {
continue; continue;
}
char *bone_name = (char *)bc_get_joint_name(*ri); char *bone_name = (char *)bc_get_joint_name(*ri);
Bone *bone = BKE_armature_find_bone_name(armature, bone_name); Bone *bone = BKE_armature_find_bone_name(armature, bone_name);
@@ -568,8 +580,9 @@ Object *ArmatureImporter::create_armature_bones(Main *bmain, SkinInfo &skin)
std::map<COLLADAFW::UniqueId, SkinInfo>::iterator it; std::map<COLLADAFW::UniqueId, SkinInfo>::iterator it;
for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) { for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) {
SkinInfo *b = &it->second; SkinInfo *b = &it->second;
if (b == a || b->BKE_armature_from_object() == NULL) if (b == a || b->BKE_armature_from_object() == NULL) {
continue; continue;
}
skin_root_joints.clear(); skin_root_joints.clear();
@@ -583,8 +596,9 @@ Object *ArmatureImporter::create_armature_bones(Main *bmain, SkinInfo &skin)
} }
} }
if (shared != NULL) if (shared != NULL) {
break; break;
}
} }
if (!shared && this->joint_parent_map.size() > 0) { if (!shared && this->joint_parent_map.size() > 0) {
@@ -620,9 +634,10 @@ Object *ArmatureImporter::create_armature_bones(Main *bmain, SkinInfo &skin)
std::vector<COLLADAFW::Node *>::iterator ri; std::vector<COLLADAFW::Node *>::iterator ri;
for (ri = root_joints.begin(); ri != root_joints.end(); ri++) { for (ri = root_joints.begin(); ri != root_joints.end(); ri++) {
/* for shared armature check if bone tree is already created */ /* for shared armature check if bone tree is already created */
if (shared && if (shared && std::find(skin_root_joints.begin(), skin_root_joints.end(), *ri) !=
std::find(skin_root_joints.begin(), skin_root_joints.end(), *ri) != skin_root_joints.end()) skin_root_joints.end()) {
continue; continue;
}
/* since root_joints may contain joints for multiple controllers, we need to filter */ /* since root_joints may contain joints for multiple controllers, we need to filter */
if (skin.uses_joint_or_descendant(*ri)) { if (skin.uses_joint_or_descendant(*ri)) {
@@ -631,8 +646,9 @@ Object *ArmatureImporter::create_armature_bones(Main *bmain, SkinInfo &skin)
&skin, *ri, NULL, (*ri)->getChildNodes().getCount(), NULL, armature, layer_labels); &skin, *ri, NULL, (*ri)->getChildNodes().getCount(), NULL, armature, layer_labels);
if (joint_parent_map.find((*ri)->getUniqueId()) != joint_parent_map.end() && if (joint_parent_map.find((*ri)->getUniqueId()) != joint_parent_map.end() &&
!skin.get_parent()) !skin.get_parent()) {
skin.set_parent(joint_parent_map[(*ri)->getUniqueId()]); skin.set_parent(joint_parent_map[(*ri)->getUniqueId()]);
}
} }
} }
@@ -767,16 +783,19 @@ void ArmatureImporter::make_armatures(bContext *C, std::vector<Object *> &object
ob_arms.push_back(ob_arm); ob_arms.push_back(ob_arm);
} }
} }
else else {
fprintf(stderr, "Cannot find object to link armature with.\n"); fprintf(stderr, "Cannot find object to link armature with.\n");
}
} }
else else {
fprintf(stderr, "Cannot find geometry to link armature with.\n"); fprintf(stderr, "Cannot find geometry to link armature with.\n");
}
/* set armature parent if any */ /* set armature parent if any */
Object *par = skin.get_parent(); Object *par = skin.get_parent();
if (par) if (par) {
bc_set_parent(skin.BKE_armature_from_object(), par, C, false); bc_set_parent(skin.BKE_armature_from_object(), par, C, false);
}
/* free memory stolen from SkinControllerData */ /* free memory stolen from SkinControllerData */
skin.free(); skin.free();
@@ -938,8 +957,9 @@ void ArmatureImporter::make_shape_keys(bContext *C)
COLLADAFW::UniqueId *ArmatureImporter::get_geometry_uid(const COLLADAFW::UniqueId &controller_uid) COLLADAFW::UniqueId *ArmatureImporter::get_geometry_uid(const COLLADAFW::UniqueId &controller_uid)
{ {
if (geom_uid_by_controller_uid.find(controller_uid) == geom_uid_by_controller_uid.end()) if (geom_uid_by_controller_uid.find(controller_uid) == geom_uid_by_controller_uid.end()) {
return NULL; return NULL;
}
return &geom_uid_by_controller_uid[controller_uid]; return &geom_uid_by_controller_uid[controller_uid];
} }
@@ -950,14 +970,16 @@ Object *ArmatureImporter::get_armature_for_joint(COLLADAFW::Node *node)
for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) { for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) {
SkinInfo &skin = it->second; SkinInfo &skin = it->second;
if (skin.uses_joint_or_descendant(node)) if (skin.uses_joint_or_descendant(node)) {
return skin.BKE_armature_from_object(); return skin.BKE_armature_from_object();
}
} }
std::map<COLLADAFW::UniqueId, Object *>::iterator arm; std::map<COLLADAFW::UniqueId, Object *>::iterator arm;
for (arm = unskinned_armature_map.begin(); arm != unskinned_armature_map.end(); arm++) { for (arm = unskinned_armature_map.begin(); arm != unskinned_armature_map.end(); arm++) {
if (arm->first == node->getUniqueId()) if (arm->first == node->getUniqueId()) {
return arm->second; return arm->second;
}
} }
return NULL; return NULL;
} }
@@ -1031,10 +1053,12 @@ BoneExtended &ArmatureImporter::add_bone_extended(EditBone *bone,
} }
be->set_bone_layers(layers, layer_labels); be->set_bone_layers(layers, layer_labels);
if (has_tail) if (has_tail) {
be->set_tail(tail); be->set_tail(tail);
if (has_roll) }
if (has_roll) {
be->set_roll(roll); be->set_roll(roll);
}
} }
if (!has_connect && this->import_settings->auto_connect) { if (!has_connect && this->import_settings->auto_connect) {

View File

@@ -145,8 +145,9 @@ const std::string BCAnimationCurve::get_animation_name(Object *ob) const
} break; } break;
case BC_ANIMATION_TYPE_BONE: { case BC_ANIMATION_TYPE_BONE: {
if (fcurve == NULL || fcurve->rna_path == NULL) if (fcurve == NULL || fcurve->rna_path == NULL) {
name = ""; name = "";
}
else { else {
const char *boneName = BLI_str_quoted_substrN(fcurve->rna_path, "pose.bones["); const char *boneName = BLI_str_quoted_substrN(fcurve->rna_path, "pose.bones[");
name = (boneName) ? std::string(boneName) : ""; name = (boneName) ? std::string(boneName) : "";
@@ -193,27 +194,31 @@ const std::string BCAnimationCurve::get_rna_path() const
const int BCAnimationCurve::sample_count() const const int BCAnimationCurve::sample_count() const
{ {
if (fcurve == NULL) if (fcurve == NULL) {
return 0; return 0;
}
return fcurve->totvert; return fcurve->totvert;
} }
const int BCAnimationCurve::closest_index_above(const float sample_frame, const int start_at) const const int BCAnimationCurve::closest_index_above(const float sample_frame, const int start_at) const
{ {
if (fcurve == NULL) if (fcurve == NULL) {
return -1; return -1;
}
const int cframe = fcurve->bezt[start_at].vec[1][0]; // inacurate! const int cframe = fcurve->bezt[start_at].vec[1][0]; // inacurate!
if (fabs(cframe - sample_frame) < 0.00001) if (fabs(cframe - sample_frame) < 0.00001) {
return start_at; return start_at;
}
return (fcurve->totvert > start_at + 1) ? start_at + 1 : start_at; return (fcurve->totvert > start_at + 1) ? start_at + 1 : start_at;
} }
const int BCAnimationCurve::closest_index_below(const float sample_frame) const const int BCAnimationCurve::closest_index_below(const float sample_frame) const
{ {
if (fcurve == NULL) if (fcurve == NULL) {
return -1; return -1;
}
float lower_frame = sample_frame; float lower_frame = sample_frame;
float upper_frame = sample_frame; float upper_frame = sample_frame;
@@ -234,8 +239,9 @@ const int BCAnimationCurve::closest_index_below(const float sample_frame) const
} }
} }
if (lower_index == upper_index) if (lower_index == upper_index) {
return lower_index; return lower_index;
}
const float fraction = float(sample_frame - lower_frame) / (upper_frame - lower_frame); const float fraction = float(sample_frame - lower_frame) / (upper_frame - lower_frame);
return (fraction < 0.5) ? lower_index : upper_index; return (fraction < 0.5) ? lower_index : upper_index;
@@ -244,8 +250,9 @@ const int BCAnimationCurve::closest_index_below(const float sample_frame) const
const int BCAnimationCurve::get_interpolation_type(float sample_frame) const const int BCAnimationCurve::get_interpolation_type(float sample_frame) const
{ {
const int index = closest_index_below(sample_frame); const int index = closest_index_below(sample_frame);
if (index < 0) if (index < 0) {
return BEZT_IPO_BEZ; return BEZT_IPO_BEZ;
}
return fcurve->bezt[index].ipo; return fcurve->bezt[index].ipo;
} }
@@ -273,8 +280,9 @@ FCurve *BCAnimationCurve::get_edit_fcurve()
void BCAnimationCurve::clean_handles() void BCAnimationCurve::clean_handles()
{ {
if (fcurve == NULL) if (fcurve == NULL) {
fcurve = get_edit_fcurve(); fcurve = get_edit_fcurve();
}
/* Keep old bezt data for copy)*/ /* Keep old bezt data for copy)*/
BezTriple *old_bezts = fcurve->bezt; BezTriple *old_bezts = fcurve->bezt;
@@ -292,8 +300,9 @@ void BCAnimationCurve::clean_handles()
} }
/* now free the memory used by the old BezTriples */ /* now free the memory used by the old BezTriples */
if (old_bezts) if (old_bezts) {
MEM_freeN(old_bezts); MEM_freeN(old_bezts);
}
} }
const bool BCAnimationCurve::is_transform_curve() const const bool BCAnimationCurve::is_transform_curve() const
@@ -500,15 +509,18 @@ bool BCAnimationCurve::is_animated()
bool BCAnimationCurve::is_keyframe(int frame) bool BCAnimationCurve::is_keyframe(int frame)
{ {
if (this->fcurve == NULL) if (this->fcurve == NULL) {
return false; return false;
}
for (int i = 0; i < fcurve->totvert; ++i) { for (int i = 0; i < fcurve->totvert; ++i) {
const int cframe = nearbyint(fcurve->bezt[i].vec[1][0]); const int cframe = nearbyint(fcurve->bezt[i].vec[1][0]);
if (cframe == frame) if (cframe == frame) {
return true; return true;
if (cframe > frame) }
if (cframe > frame) {
break; break;
}
} }
return false; return false;
} }
@@ -523,8 +535,9 @@ inline bool operator<(const BCAnimationCurve &lhs, const BCAnimationCurve &rhs)
const int rha = rhs.get_channel_index(); const int rha = rhs.get_channel_index();
return lha < rha; return lha < rha;
} }
else else {
return lhtgt < rhtgt; return lhtgt < rhtgt;
}
} }
BCCurveKey::BCCurveKey() BCCurveKey::BCCurveKey()
@@ -587,14 +600,17 @@ const BC_animation_type BCCurveKey::get_animation_type() const
const bool BCCurveKey::operator<(const BCCurveKey &other) const const bool BCCurveKey::operator<(const BCCurveKey &other) const
{ {
/* needed for using this class as key in maps and sets */ /* needed for using this class as key in maps and sets */
if (this->key_type != other.key_type) if (this->key_type != other.key_type) {
return this->key_type < other.key_type; return this->key_type < other.key_type;
}
if (this->curve_subindex != other.curve_subindex) if (this->curve_subindex != other.curve_subindex) {
return this->curve_subindex < other.curve_subindex; return this->curve_subindex < other.curve_subindex;
}
if (this->rna_path != other.rna_path) if (this->rna_path != other.rna_path) {
return this->rna_path < other.rna_path; return this->rna_path < other.rna_path;
}
return this->curve_array_index < other.curve_array_index; return this->curve_array_index < other.curve_array_index;
} }

View File

@@ -76,8 +76,9 @@ void BCAnimationSampler::add_object(Object *ob)
BCAnimationCurveMap *BCAnimationSampler::get_curves(Object *ob) BCAnimationCurveMap *BCAnimationSampler::get_curves(Object *ob)
{ {
BCAnimation &animation = *objects[ob]; BCAnimation &animation = *objects[ob];
if (animation.curve_map.size() == 0) if (animation.curve_map.size() == 0) {
initialize_curves(animation.curve_map, ob); initialize_curves(animation.curve_map, ob);
}
return &animation.curve_map; return &animation.curve_map;
} }
@@ -88,8 +89,9 @@ static void get_sample_frames(BCFrameSet &sample_frames,
{ {
sample_frames.clear(); sample_frames.clear();
if (sampling_rate < 1) if (sampling_rate < 1) {
return; // no sample frames in this case return; // no sample frames in this case
}
float sfra = scene->r.sfra; float sfra = scene->r.sfra;
float efra = scene->r.efra; float efra = scene->r.efra;
@@ -237,8 +239,9 @@ bool BCAnimationSampler::is_animated_by_constraint(Object *ob,
const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con); const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con);
if (!bc_validateConstraints(con)) if (!bc_validateConstraints(con)) {
continue; continue;
}
if (cti && cti->get_constraint_targets) { if (cti && cti->get_constraint_targets) {
bConstraintTarget *ct; bConstraintTarget *ct;
@@ -247,8 +250,9 @@ bool BCAnimationSampler::is_animated_by_constraint(Object *ob,
for (ct = (bConstraintTarget *)targets.first; ct; ct = ct->next) { for (ct = (bConstraintTarget *)targets.first; ct; ct = ct->next) {
obtar = ct->tar; obtar = ct->tar;
if (obtar) { if (obtar) {
if (animated_objects.find(obtar) != animated_objects.end()) if (animated_objects.find(obtar) != animated_objects.end()) {
return true; return true;
}
} }
} }
} }
@@ -297,8 +301,9 @@ void BCAnimationSampler::get_animated_from_export_set(std::set<Object *> &animat
} }
else { else {
ListBase conlist = cob->constraints; ListBase conlist = cob->constraints;
if (conlist.first) if (conlist.first) {
candidates.insert(cob); candidates.insert(cob);
}
} }
} }
find_depending_animated(animated_objects, candidates); find_depending_animated(animated_objects, candidates);
@@ -403,8 +408,9 @@ void BCAnimationSampler::generate_transforms(Object *ob, Bone *bone, BCAnimation
std::string prep = "pose.bones[\"" + std::string(bone->name) + "\"]."; std::string prep = "pose.bones[\"" + std::string(bone->name) + "\"].";
generate_transforms(ob, prep, BC_ANIMATION_TYPE_BONE, curves); generate_transforms(ob, prep, BC_ANIMATION_TYPE_BONE, curves);
for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) {
generate_transforms(ob, child, curves); generate_transforms(ob, child, curves);
}
} }
/** /**
@@ -453,8 +459,9 @@ void BCAnimationSampler::initialize_curves(BCAnimationCurveMap &curves, Object *
generate_transforms(ob, EMPTY_STRING, object_type, curves); generate_transforms(ob, EMPTY_STRING, object_type, curves);
if (ob->type == OB_ARMATURE) { if (ob->type == OB_ARMATURE) {
bArmature *arm = (bArmature *)ob->data; bArmature *arm = (bArmature *)ob->data;
for (Bone *root_bone = (Bone *)arm->bonebase.first; root_bone; root_bone = root_bone->next) for (Bone *root_bone = (Bone *)arm->bonebase.first; root_bone; root_bone = root_bone->next) {
generate_transforms(ob, root_bone, curves); generate_transforms(ob, root_bone, curves);
}
} }
/* Add curves on Object->data actions */ /* Add curves on Object->data actions */

View File

@@ -203,13 +203,15 @@ void BCMatrix::unit()
* precision = -1 indicates to not limit the precision. */ * precision = -1 indicates to not limit the precision. */
void BCMatrix::get_matrix(DMatrix &mat, const bool transposed, const int precision) const void BCMatrix::get_matrix(DMatrix &mat, const bool transposed, const int precision) const
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) { for (int j = 0; j < 4; j++) {
float val = (transposed) ? matrix[j][i] : matrix[i][j]; float val = (transposed) ? matrix[j][i] : matrix[i][j];
if (precision >= 0) if (precision >= 0) {
val = floor((val * pow(10, precision) + 0.5)) / pow(10, precision); val = floor((val * pow(10, precision) + 0.5)) / pow(10, precision);
}
mat[i][j] = val; mat[i][j] = val;
} }
}
} }
void BCMatrix::get_matrix(Matrix &mat, void BCMatrix::get_matrix(Matrix &mat,
@@ -217,13 +219,15 @@ void BCMatrix::get_matrix(Matrix &mat,
const int precision, const int precision,
const bool inverted) const const bool inverted) const
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) { for (int j = 0; j < 4; j++) {
float val = (transposed) ? matrix[j][i] : matrix[i][j]; float val = (transposed) ? matrix[j][i] : matrix[i][j];
if (precision >= 0) if (precision >= 0) {
val = floor((val * pow(10, precision) + 0.5)) / pow(10, precision); val = floor((val * pow(10, precision) + 0.5)) / pow(10, precision);
}
mat[i][j] = val; mat[i][j] = val;
} }
}
if (inverted) { if (inverted) {
invert_m4(mat); invert_m4(mat);

View File

@@ -79,8 +79,9 @@ bool ControllerExporter::add_instance_controller(Object *ob)
ins.setUrl(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, controller_id)); ins.setUrl(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, controller_id));
Mesh *me = (Mesh *)ob->data; Mesh *me = (Mesh *)ob->data;
if (!me->dvert) if (!me->dvert) {
return false; return false;
}
/* write root bone URLs */ /* write root bone URLs */
Bone *bone; Bone *bone;
@@ -227,10 +228,12 @@ void ControllerExporter::export_skin_controller(Object *ob, Object *ob_arm)
bDeformGroup *def; bDeformGroup *def;
for (def = (bDeformGroup *)ob->defbase.first, i = 0, j = 0; def; def = def->next, i++) { for (def = (bDeformGroup *)ob->defbase.first, i = 0, j = 0; def; def = def->next, i++) {
if (is_bone_defgroup(ob_arm, def)) if (is_bone_defgroup(ob_arm, def)) {
joint_index_by_def_index.push_back(j++); joint_index_by_def_index.push_back(j++);
else }
else {
joint_index_by_def_index.push_back(-1); joint_index_by_def_index.push_back(-1);
}
} }
int oob_counter = 0; int oob_counter = 0;
@@ -440,8 +443,9 @@ void ControllerExporter::add_bind_shape_mat(Object *ob)
// UnitConverter::mat4_to_dae_double(bind_mat, ob->obmat); // UnitConverter::mat4_to_dae_double(bind_mat, ob->obmat);
UnitConverter::mat4_to_dae_double(bind_mat, f_obmat); UnitConverter::mat4_to_dae_double(bind_mat, f_obmat);
if (this->export_settings.get_limit_precision()) if (this->export_settings.get_limit_precision()) {
bc_sanitize_mat(bind_mat, LIMITTED_PRECISION); bc_sanitize_mat(bind_mat, LIMITTED_PRECISION);
}
addBindShapeTransform(bind_mat); addBindShapeTransform(bind_mat);
} }
@@ -455,8 +459,9 @@ std::string ControllerExporter::add_joints_source(Object *ob_arm,
int totjoint = 0; int totjoint = 0;
bDeformGroup *def; bDeformGroup *def;
for (def = (bDeformGroup *)defbase->first; def; def = def->next) { for (def = (bDeformGroup *)defbase->first; def; def = def->next) {
if (is_bone_defgroup(ob_arm, def)) if (is_bone_defgroup(ob_arm, def)) {
totjoint++; totjoint++;
}
} }
COLLADASW::NameSource source(mSW); COLLADASW::NameSource source(mSW);
@@ -472,8 +477,9 @@ std::string ControllerExporter::add_joints_source(Object *ob_arm,
for (def = (bDeformGroup *)defbase->first; def; def = def->next) { for (def = (bDeformGroup *)defbase->first; def; def = def->next) {
Bone *bone = get_bone_from_defgroup(ob_arm, def); Bone *bone = get_bone_from_defgroup(ob_arm, def);
if (bone) if (bone) {
source.appendValues(get_joint_sid(bone)); source.appendValues(get_joint_sid(bone));
}
} }
source.finish(); source.finish();
@@ -489,8 +495,9 @@ std::string ControllerExporter::add_inv_bind_mats_source(Object *ob_arm,
int totjoint = 0; int totjoint = 0;
for (bDeformGroup *def = (bDeformGroup *)defbase->first; def; def = def->next) { for (bDeformGroup *def = (bDeformGroup *)defbase->first; def; def = def->next) {
if (is_bone_defgroup(ob_arm, def)) if (is_bone_defgroup(ob_arm, def)) {
totjoint++; totjoint++;
}
} }
COLLADASW::FloatSourceF source(mSW); COLLADASW::FloatSourceF source(mSW);
@@ -561,8 +568,9 @@ std::string ControllerExporter::add_inv_bind_mats_source(Object *ob_arm,
invert_m4_m4(mat, world); invert_m4_m4(mat, world);
UnitConverter::mat4_to_dae(inv_bind_mat, mat); UnitConverter::mat4_to_dae(inv_bind_mat, mat);
if (this->export_settings.get_limit_precision()) if (this->export_settings.get_limit_precision()) {
bc_sanitize_mat(inv_bind_mat, LIMITTED_PRECISION); bc_sanitize_mat(inv_bind_mat, LIMITTED_PRECISION);
}
source.appendValues(inv_bind_mat); source.appendValues(inv_bind_mat);
} }
} }

View File

@@ -130,8 +130,9 @@ extern bool bc_has_object_type(LinkNode *export_set, short obtype);
char *bc_CustomData_get_layer_name(const struct CustomData *data, int type, int n) char *bc_CustomData_get_layer_name(const struct CustomData *data, int type, int n)
{ {
int layer_index = CustomData_get_layer_index(data, type); int layer_index = CustomData_get_layer_index(data, type);
if (layer_index < 0) if (layer_index < 0) {
return NULL; return NULL;
}
return data->layers[layer_index + n].name; return data->layers[layer_index + n].name;
} }
@@ -140,8 +141,9 @@ char *bc_CustomData_get_active_layer_name(const CustomData *data, int type)
{ {
/* get the layer index of the active layer of type */ /* get the layer index of the active layer of type */
int layer_index = CustomData_get_active_layer_index(data, type); int layer_index = CustomData_get_active_layer_index(data, type);
if (layer_index < 0) if (layer_index < 0) {
return NULL; return NULL;
}
return data->layers[layer_index].name; return data->layers[layer_index].name;
} }

View File

@@ -179,8 +179,9 @@ void DocumentImporter::start()
void DocumentImporter::finish() void DocumentImporter::finish()
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return; return;
}
Main *bmain = CTX_data_main(mContext); Main *bmain = CTX_data_main(mContext);
/* TODO: create a new scene except the selected <visual_scene> - /* TODO: create a new scene except the selected <visual_scene> -
@@ -287,10 +288,12 @@ void DocumentImporter::translate_anim_recursive(COLLADAFW::Node *node,
* part in skinning. */ * part in skinning. */
if (par) { // && par->getType() == COLLADAFW::Node::JOINT) { if (par) { // && par->getType() == COLLADAFW::Node::JOINT) {
/* par is root if there's no corresp. key in root_map */ /* par is root if there's no corresp. key in root_map */
if (root_map.find(par->getUniqueId()) == root_map.end()) if (root_map.find(par->getUniqueId()) == root_map.end()) {
root_map[node->getUniqueId()] = node; root_map[node->getUniqueId()] = node;
else }
else {
root_map[node->getUniqueId()] = root_map[par->getUniqueId()]; root_map[node->getUniqueId()] = root_map[par->getUniqueId()];
}
} }
#if 0 #if 0
@@ -446,8 +449,9 @@ Object *DocumentImporter::create_instance_node(Object *source_ob,
for (unsigned int i = 0; i < children.getCount(); i++) { for (unsigned int i = 0; i < children.getCount(); i++) {
COLLADAFW::Node *child_node = children[i]; COLLADAFW::Node *child_node = children[i];
const COLLADAFW::UniqueId &child_id = child_node->getUniqueId(); const COLLADAFW::UniqueId &child_id = child_node->getUniqueId();
if (object_map.find(child_id) == object_map.end()) if (object_map.find(child_id) == object_map.end()) {
continue; continue;
}
COLLADAFW::InstanceNodePointerArray &inodes = child_node->getInstanceNodes(); COLLADAFW::InstanceNodePointerArray &inodes = child_node->getInstanceNodes();
Object *new_child = NULL; Object *new_child = NULL;
if (inodes.getCount()) { // \todo loop through instance nodes if (inodes.getCount()) { // \todo loop through instance nodes
@@ -462,8 +466,9 @@ Object *DocumentImporter::create_instance_node(Object *source_ob,
} }
bc_set_parent(new_child, obn, mContext, true); bc_set_parent(new_child, obn, mContext, true);
if (is_library_node) if (is_library_node) {
libnode_ob.push_back(new_child); libnode_ob.push_back(new_child);
}
} }
} }
@@ -665,8 +670,9 @@ std::vector<Object *> *DocumentImporter::write_node(COLLADAFW::Node *node,
object_map.insert(std::pair<COLLADAFW::UniqueId, Object *>(node->getUniqueId(), ob)); object_map.insert(std::pair<COLLADAFW::UniqueId, Object *>(node->getUniqueId(), ob));
node_map[node->getUniqueId()] = node; node_map[node->getUniqueId()] = node;
if (is_library_node) if (is_library_node) {
libnode_ob.push_back(ob); libnode_ob.push_back(ob);
}
} }
// create_constraints(et,ob); // create_constraints(et,ob);
@@ -676,8 +682,9 @@ std::vector<Object *> *DocumentImporter::write_node(COLLADAFW::Node *node,
++it) { ++it) {
ob = *it; ob = *it;
if (read_transform) if (read_transform) {
anim_importer.read_node_transform(node, ob); // overwrites location set earlier anim_importer.read_node_transform(node, ob); // overwrites location set earlier
}
if (!is_joint) { if (!is_joint) {
if (par && ob) { if (par && ob) {
@@ -715,8 +722,9 @@ finally:
*/ */
bool DocumentImporter::writeVisualScene(const COLLADAFW::VisualScene *visualScene) bool DocumentImporter::writeVisualScene(const COLLADAFW::VisualScene *visualScene)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
/* This method called on post process after writeGeometry, writeMaterial, etc. */ /* This method called on post process after writeGeometry, writeMaterial, etc. */
@@ -739,8 +747,9 @@ bool DocumentImporter::writeVisualScene(const COLLADAFW::VisualScene *visualScen
* \return The writer should return true, if writing succeeded, false otherwise.*/ * \return The writer should return true, if writing succeeded, false otherwise.*/
bool DocumentImporter::writeLibraryNodes(const COLLADAFW::LibraryNodes *libraryNodes) bool DocumentImporter::writeLibraryNodes(const COLLADAFW::LibraryNodes *libraryNodes)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
Scene *sce = CTX_data_scene(mContext); Scene *sce = CTX_data_scene(mContext);
@@ -759,8 +768,9 @@ bool DocumentImporter::writeLibraryNodes(const COLLADAFW::LibraryNodes *libraryN
* \return The writer should return true, if writing succeeded, false otherwise.*/ * \return The writer should return true, if writing succeeded, false otherwise.*/
bool DocumentImporter::writeGeometry(const COLLADAFW::Geometry *geom) bool DocumentImporter::writeGeometry(const COLLADAFW::Geometry *geom)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
return mesh_importer.write_geometry(geom); return mesh_importer.write_geometry(geom);
} }
@@ -769,8 +779,9 @@ bool DocumentImporter::writeGeometry(const COLLADAFW::Geometry *geom)
* \return The writer should return true, if writing succeeded, false otherwise.*/ * \return The writer should return true, if writing succeeded, false otherwise.*/
bool DocumentImporter::writeMaterial(const COLLADAFW::Material *cmat) bool DocumentImporter::writeMaterial(const COLLADAFW::Material *cmat)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
Main *bmain = CTX_data_main(mContext); Main *bmain = CTX_data_main(mContext);
const std::string &str_mat_id = cmat->getName().size() ? cmat->getName() : cmat->getOriginalId(); const std::string &str_mat_id = cmat->getName().size() ? cmat->getName() : cmat->getOriginalId();
@@ -800,8 +811,9 @@ void DocumentImporter::write_profile_COMMON(COLLADAFW::EffectCommon *ef, Materia
bool DocumentImporter::writeEffect(const COLLADAFW::Effect *effect) bool DocumentImporter::writeEffect(const COLLADAFW::Effect *effect)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
const COLLADAFW::UniqueId &uid = effect->getUniqueId(); const COLLADAFW::UniqueId &uid = effect->getUniqueId();
@@ -836,8 +848,9 @@ bool DocumentImporter::writeEffect(const COLLADAFW::Effect *effect)
* \return The writer should return true, if writing succeeded, false otherwise.*/ * \return The writer should return true, if writing succeeded, false otherwise.*/
bool DocumentImporter::writeCamera(const COLLADAFW::Camera *camera) bool DocumentImporter::writeCamera(const COLLADAFW::Camera *camera)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
Main *bmain = CTX_data_main(mContext); Main *bmain = CTX_data_main(mContext);
Camera *cam = NULL; Camera *cam = NULL;
@@ -846,10 +859,12 @@ bool DocumentImporter::writeCamera(const COLLADAFW::Camera *camera)
ExtraTags *et = getExtraTags(camera->getUniqueId()); ExtraTags *et = getExtraTags(camera->getUniqueId());
cam_id = camera->getOriginalId(); cam_id = camera->getOriginalId();
cam_name = camera->getName(); cam_name = camera->getName();
if (cam_name.size()) if (cam_name.size()) {
cam = (Camera *)BKE_camera_add(bmain, (char *)cam_name.c_str()); cam = (Camera *)BKE_camera_add(bmain, (char *)cam_name.c_str());
else }
else {
cam = (Camera *)BKE_camera_add(bmain, (char *)cam_id.c_str()); cam = (Camera *)BKE_camera_add(bmain, (char *)cam_id.c_str());
}
if (!cam) { if (!cam) {
fprintf(stderr, "Cannot create camera.\n"); fprintf(stderr, "Cannot create camera.\n");
@@ -944,8 +959,9 @@ bool DocumentImporter::writeCamera(const COLLADAFW::Camera *camera)
* \return The writer should return true, if writing succeeded, false otherwise.*/ * \return The writer should return true, if writing succeeded, false otherwise.*/
bool DocumentImporter::writeImage(const COLLADAFW::Image *image) bool DocumentImporter::writeImage(const COLLADAFW::Image *image)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
const std::string &imagepath = image->getImageURI().toNativePath(); const std::string &imagepath = image->getImageURI().toNativePath();
@@ -981,8 +997,9 @@ bool DocumentImporter::writeImage(const COLLADAFW::Image *image)
* \return The writer should return true, if writing succeeded, false otherwise.*/ * \return The writer should return true, if writing succeeded, false otherwise.*/
bool DocumentImporter::writeLight(const COLLADAFW::Light *light) bool DocumentImporter::writeLight(const COLLADAFW::Light *light)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
Main *bmain = CTX_data_main(mContext); Main *bmain = CTX_data_main(mContext);
Light *lamp = NULL; Light *lamp = NULL;
@@ -1000,10 +1017,12 @@ bool DocumentImporter::writeLight(const COLLADAFW::Light *light)
la_id = light->getOriginalId(); la_id = light->getOriginalId();
la_name = light->getName(); la_name = light->getName();
if (la_name.size()) if (la_name.size()) {
lamp = (Light *)BKE_light_add(bmain, (char *)la_name.c_str()); lamp = (Light *)BKE_light_add(bmain, (char *)la_name.c_str());
else }
else {
lamp = (Light *)BKE_light_add(bmain, (char *)la_id.c_str()); lamp = (Light *)BKE_light_add(bmain, (char *)la_id.c_str());
}
if (!lamp) { if (!lamp) {
fprintf(stderr, "Cannot create light.\n"); fprintf(stderr, "Cannot create light.\n");
@@ -1087,10 +1106,12 @@ bool DocumentImporter::writeLight(const COLLADAFW::Light *light)
lamp->type = LA_SPOT; lamp->type = LA_SPOT;
lamp->att1 = att1; lamp->att1 = att1;
lamp->att2 = att2; lamp->att2 = att2;
if (IS_EQ(att1, 0.0f) && att2 > 0) if (IS_EQ(att1, 0.0f) && att2 > 0) {
lamp->falloff_type = LA_FALLOFF_INVSQUARE; lamp->falloff_type = LA_FALLOFF_INVSQUARE;
if (IS_EQ(att2, 0.0f) && att1 > 0) }
if (IS_EQ(att2, 0.0f) && att1 > 0) {
lamp->falloff_type = LA_FALLOFF_INVLINEAR; lamp->falloff_type = LA_FALLOFF_INVLINEAR;
}
lamp->spotsize = DEG2RADF(light->getFallOffAngle().getValue()); lamp->spotsize = DEG2RADF(light->getFallOffAngle().getValue());
lamp->spotblend = light->getFallOffExponent().getValue(); lamp->spotblend = light->getFallOffExponent().getValue();
} break; } break;
@@ -1102,10 +1123,12 @@ bool DocumentImporter::writeLight(const COLLADAFW::Light *light)
lamp->type = LA_LOCAL; lamp->type = LA_LOCAL;
lamp->att1 = att1; lamp->att1 = att1;
lamp->att2 = att2; lamp->att2 = att2;
if (IS_EQ(att1, 0.0f) && att2 > 0) if (IS_EQ(att1, 0.0f) && att2 > 0) {
lamp->falloff_type = LA_FALLOFF_INVSQUARE; lamp->falloff_type = LA_FALLOFF_INVSQUARE;
if (IS_EQ(att2, 0.0f) && att1 > 0) }
if (IS_EQ(att2, 0.0f) && att1 > 0) {
lamp->falloff_type = LA_FALLOFF_INVLINEAR; lamp->falloff_type = LA_FALLOFF_INVLINEAR;
}
} break; } break;
case COLLADAFW::Light::UNDEFINED: { case COLLADAFW::Light::UNDEFINED: {
fprintf(stderr, "Current light type is not supported.\n"); fprintf(stderr, "Current light type is not supported.\n");
@@ -1122,8 +1145,9 @@ bool DocumentImporter::writeLight(const COLLADAFW::Light *light)
/* this function is called only for animations that pass COLLADAFW::validate */ /* this function is called only for animations that pass COLLADAFW::validate */
bool DocumentImporter::writeAnimation(const COLLADAFW::Animation *anim) bool DocumentImporter::writeAnimation(const COLLADAFW::Animation *anim)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
return anim_importer.write_animation(anim); return anim_importer.write_animation(anim);
} }
@@ -1131,8 +1155,9 @@ bool DocumentImporter::writeAnimation(const COLLADAFW::Animation *anim)
/* called on post-process stage after writeVisualScenes */ /* called on post-process stage after writeVisualScenes */
bool DocumentImporter::writeAnimationList(const COLLADAFW::AnimationList *animationList) bool DocumentImporter::writeAnimationList(const COLLADAFW::AnimationList *animationList)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
/* return true; */ /* return true; */
return anim_importer.write_animation_list(animationList); return anim_importer.write_animation_list(animationList);
@@ -1143,8 +1168,9 @@ bool DocumentImporter::writeAnimationList(const COLLADAFW::AnimationList *animat
* called on post-process stage after writeVisualScenes */ * called on post-process stage after writeVisualScenes */
bool DocumentImporter::writeAnimationClip(const COLLADAFW::AnimationClip *animationClip) bool DocumentImporter::writeAnimationClip(const COLLADAFW::AnimationClip *animationClip)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
return true; return true;
/* TODO: implement import of AnimationClips */ /* TODO: implement import of AnimationClips */
@@ -1162,8 +1188,9 @@ bool DocumentImporter::writeSkinControllerData(const COLLADAFW::SkinControllerDa
/* this is called on postprocess, before writeVisualScenes */ /* this is called on postprocess, before writeVisualScenes */
bool DocumentImporter::writeController(const COLLADAFW::Controller *controller) bool DocumentImporter::writeController(const COLLADAFW::Controller *controller)
{ {
if (mImportStage == Fetching_Controller_data) if (mImportStage == Fetching_Controller_data) {
return true; return true;
}
return armature_importer.write_controller(controller); return armature_importer.write_controller(controller);
} }

View File

@@ -46,8 +46,9 @@ static std::string getActiveUVLayerName(Object *ob)
Mesh *me = (Mesh *)ob->data; Mesh *me = (Mesh *)ob->data;
int num_layers = CustomData_number_of_layers(&me->ldata, CD_MLOOPUV); int num_layers = CustomData_number_of_layers(&me->ldata, CD_MLOOPUV);
if (num_layers) if (num_layers) {
return std::string(bc_CustomData_get_active_layer_name(&me->ldata, CD_MLOOPUV)); return std::string(bc_CustomData_get_active_layer_name(&me->ldata, CD_MLOOPUV));
}
return ""; return "";
} }
@@ -67,8 +68,9 @@ bool EffectsExporter::hasEffects(Scene *sce)
Material *ma = give_current_material(ob, a + 1); Material *ma = give_current_material(ob, a + 1);
// no material, but check all of the slots // no material, but check all of the slots
if (!ma) if (!ma) {
continue; continue;
}
return true; return true;
} }

View File

@@ -79,9 +79,10 @@ bool ErrorHandler::handleError(const COLLADASaxFWL::IError *error)
error_context = "File access"; error_context = "File access";
} }
else else {
isError = (parserError.getSeverity() != isError = (parserError.getSeverity() !=
GeneratedSaxParser::ParserError::Severity::SEVERITY_ERROR_NONCRITICAL); GeneratedSaxParser::ParserError::Severity::SEVERITY_ERROR_NONCRITICAL);
}
} }
else if (error->getErrorClass() == COLLADASaxFWL::IError::ERROR_SAXFWL) { else if (error->getErrorClass() == COLLADASaxFWL::IError::ERROR_SAXFWL) {
error_context = "Sax FWL"; error_context = "Sax FWL";

View File

@@ -50,8 +50,9 @@ bool ExtraHandler::textData(const char *text, size_t textLength)
{ {
char buf[1024]; char buf[1024];
if (currentElement.length() == 0 || currentExtraTags == 0) if (currentElement.length() == 0 || currentExtraTags == 0) {
return false; return false;
}
BLI_strncpy(buf, text, textLength + 1); BLI_strncpy(buf, text, textLength + 1);
currentExtraTags->addTag(currentElement, std::string(buf)); currentExtraTags->addTag(currentElement, std::string(buf));

View File

@@ -82,8 +82,9 @@ bool ExtraTags::setData(std::string tag, short *data)
{ {
bool ok = false; bool ok = false;
int tmp = asInt(tag, &ok); int tmp = asInt(tag, &ok);
if (ok) if (ok) {
*data = (short)tmp; *data = (short)tmp;
}
return ok; return ok;
} }
@@ -91,8 +92,9 @@ bool ExtraTags::setData(std::string tag, int *data)
{ {
bool ok = false; bool ok = false;
int tmp = asInt(tag, &ok); int tmp = asInt(tag, &ok);
if (ok) if (ok) {
*data = tmp; *data = tmp;
}
return ok; return ok;
} }
@@ -100,8 +102,9 @@ bool ExtraTags::setData(std::string tag, float *data)
{ {
bool ok = false; bool ok = false;
float tmp = asFloat(tag, &ok); float tmp = asFloat(tag, &ok);
if (ok) if (ok) {
*data = tmp; *data = tmp;
}
return ok; return ok;
} }
@@ -109,8 +112,9 @@ bool ExtraTags::setData(std::string tag, char *data)
{ {
bool ok = false; bool ok = false;
int tmp = asInt(tag, &ok); int tmp = asInt(tag, &ok);
if (ok) if (ok) {
*data = (char)tmp; *data = (char)tmp;
}
return ok; return ok;
} }

View File

@@ -311,8 +311,9 @@ static bool collect_vertex_counts_per_poly(Mesh *me,
if (p->mat_nr == material_index) { if (p->mat_nr == material_index) {
int vertex_count = p->totloop; int vertex_count = p->totloop;
vcount_list.push_back(vertex_count); vcount_list.push_back(vertex_count);
if (vertex_count != 3) if (vertex_count != 3) {
is_triangulated = false; is_triangulated = false;
}
} }
} }
return is_triangulated; return is_triangulated;
@@ -426,11 +427,13 @@ void GeometryExporter::create_mesh_primitive_list(short material_index,
for (int j = 0; j < loop_count; j++) { for (int j = 0; j < loop_count; j++) {
primitive_list->appendValues(l[j].v); primitive_list->appendValues(l[j].v);
primitive_list->appendValues(normal_indices[j]); primitive_list->appendValues(normal_indices[j]);
if (has_uvs) if (has_uvs) {
primitive_list->appendValues(texindex + j); primitive_list->appendValues(texindex + j);
}
if (has_color) if (has_color) {
primitive_list->appendValues(texindex + j); primitive_list->appendValues(texindex + j);
}
} }
} }
@@ -484,8 +487,9 @@ void GeometryExporter::createVertexColorSource(std::string geom_id, Mesh *me)
{ {
/* Find number of vertex color layers */ /* Find number of vertex color layers */
int totlayer_mcol = CustomData_number_of_layers(&me->ldata, CD_MLOOPCOL); int totlayer_mcol = CustomData_number_of_layers(&me->ldata, CD_MLOOPCOL);
if (totlayer_mcol == 0) if (totlayer_mcol == 0) {
return; return;
}
int map_index = 0; int map_index = 0;
for (int a = 0; a < totlayer_mcol; a++) { for (int a = 0; a < totlayer_mcol; a++) {

View File

@@ -52,8 +52,9 @@ bool MaterialsExporter::hasMaterials(Scene *sce)
Material *ma = give_current_material(ob, a + 1); Material *ma = give_current_material(ob, a + 1);
// no material, but check all of the slots // no material, but check all of the slots
if (!ma) if (!ma) {
continue; continue;
}
return true; return true;
} }

View File

@@ -68,8 +68,9 @@ template<class Functor> class ForEachMaterialFunctor {
Material *ma = give_current_material(ob, a + 1); Material *ma = give_current_material(ob, a + 1);
if (!ma) if (!ma) {
continue; continue;
}
std::string translated_id = translate_id(id_name(ma)); std::string translated_id = translate_id(id_name(ma));
if (find(mMat.begin(), mMat.end(), translated_id) == mMat.end()) { if (find(mMat.begin(), mMat.end(), translated_id) == mMat.end()) {

View File

@@ -131,22 +131,25 @@ void WVDataWrapper::print()
void UVDataWrapper::getUV(int uv_index, float *uv) void UVDataWrapper::getUV(int uv_index, float *uv)
{ {
int stride = mVData->getStride(0); int stride = mVData->getStride(0);
if (stride == 0) if (stride == 0) {
stride = 2; stride = 2;
}
switch (mVData->getType()) { switch (mVData->getType()) {
case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: { case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: {
COLLADAFW::ArrayPrimitiveType<float> *values = mVData->getFloatValues(); COLLADAFW::ArrayPrimitiveType<float> *values = mVData->getFloatValues();
if (values->empty()) if (values->empty()) {
return; return;
}
uv[0] = (*values)[uv_index * stride]; uv[0] = (*values)[uv_index * stride];
uv[1] = (*values)[uv_index * stride + 1]; uv[1] = (*values)[uv_index * stride + 1];
} break; } break;
case COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE: { case COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE: {
COLLADAFW::ArrayPrimitiveType<double> *values = mVData->getDoubleValues(); COLLADAFW::ArrayPrimitiveType<double> *values = mVData->getDoubleValues();
if (values->empty()) if (values->empty()) {
return; return;
}
uv[0] = (float)(*values)[uv_index * stride]; uv[0] = (float)(*values)[uv_index * stride];
uv[1] = (float)(*values)[uv_index * stride + 1]; uv[1] = (float)(*values)[uv_index * stride + 1];
@@ -164,14 +167,16 @@ VCOLDataWrapper::VCOLDataWrapper(COLLADAFW::MeshVertexData &vdata) : mVData(&vda
void VCOLDataWrapper::get_vcol(int v_index, MLoopCol *mloopcol) void VCOLDataWrapper::get_vcol(int v_index, MLoopCol *mloopcol)
{ {
int stride = mVData->getStride(0); int stride = mVData->getStride(0);
if (stride == 0) if (stride == 0) {
stride = 3; stride = 3;
}
switch (mVData->getType()) { switch (mVData->getType()) {
case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: { case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: {
COLLADAFW::ArrayPrimitiveType<float> *values = mVData->getFloatValues(); COLLADAFW::ArrayPrimitiveType<float> *values = mVData->getFloatValues();
if (values->empty() || values->getCount() <= (v_index * stride + 2)) if (values->empty() || values->getCount() <= (v_index * stride + 2)) {
return; // xxx need to create an error instead return; // xxx need to create an error instead
}
mloopcol->r = unit_float_to_uchar_clamp((*values)[v_index * stride]); mloopcol->r = unit_float_to_uchar_clamp((*values)[v_index * stride]);
mloopcol->g = unit_float_to_uchar_clamp((*values)[v_index * stride + 1]); mloopcol->g = unit_float_to_uchar_clamp((*values)[v_index * stride + 1]);
@@ -180,8 +185,9 @@ void VCOLDataWrapper::get_vcol(int v_index, MLoopCol *mloopcol)
case COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE: { case COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE: {
COLLADAFW::ArrayPrimitiveType<double> *values = mVData->getDoubleValues(); COLLADAFW::ArrayPrimitiveType<double> *values = mVData->getDoubleValues();
if (values->empty() || values->getCount() <= (v_index * stride + 2)) if (values->empty() || values->getCount() <= (v_index * stride + 2)) {
return; // xxx need to create an error instead return; // xxx need to create an error instead
}
mloopcol->r = unit_float_to_uchar_clamp((*values)[v_index * stride]); mloopcol->r = unit_float_to_uchar_clamp((*values)[v_index * stride]);
mloopcol->g = unit_float_to_uchar_clamp((*values)[v_index * stride + 1]); mloopcol->g = unit_float_to_uchar_clamp((*values)[v_index * stride + 1]);
@@ -340,8 +346,9 @@ void MeshImporter::read_vertices(COLLADAFW::Mesh *mesh, Mesh *me)
} }
int stride = pos.getStride(0); int stride = pos.getStride(0);
if (stride == 0) if (stride == 0) {
stride = 3; stride = 3;
}
me->totvert = pos.getFloatValues()->getCount() / stride; me->totvert = pos.getFloatValues()->getCount() / stride;
me->mvert = (MVert *)CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, me->totvert); me->mvert = (MVert *)CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, me->totvert);
@@ -368,8 +375,9 @@ bool MeshImporter::primitive_has_useable_normals(COLLADAFW::MeshPrimitive *mp)
int normals_count = mp->getNormalIndices().getCount(); int normals_count = mp->getNormalIndices().getCount();
if (normals_count > 0) { if (normals_count > 0) {
int index_count = mp->getPositionIndices().getCount(); int index_count = mp->getPositionIndices().getCount();
if (index_count == normals_count) if (index_count == normals_count) {
has_useable_normals = true; has_useable_normals = true;
}
else { else {
fprintf(stderr, fprintf(stderr,
"Warning: Number of normals %d is different from the number of vertices %d, " "Warning: Number of normals %d is different from the number of vertices %d, "
@@ -562,8 +570,9 @@ void MeshImporter::mesh_add_edges(Mesh *mesh, int len)
MEdge *medge; MEdge *medge;
int totedge; int totedge;
if (len == 0) if (len == 0) {
return; return;
}
totedge = mesh->totedge + len; totedge = mesh->totedge + len;
@@ -571,8 +580,9 @@ void MeshImporter::mesh_add_edges(Mesh *mesh, int len)
CustomData_copy(&mesh->edata, &edata, CD_MASK_MESH.emask, CD_DEFAULT, totedge); CustomData_copy(&mesh->edata, &edata, CD_MASK_MESH.emask, CD_DEFAULT, totedge);
CustomData_copy_data(&mesh->edata, &edata, 0, 0, mesh->totedge); CustomData_copy_data(&mesh->edata, &edata, 0, 0, mesh->totedge);
if (!CustomData_has_layer(&edata, CD_MEDGE)) if (!CustomData_has_layer(&edata, CD_MEDGE)) {
CustomData_add_layer(&edata, CD_MEDGE, CD_CALLOC, NULL, totedge); CustomData_add_layer(&edata, CD_MEDGE, CD_CALLOC, NULL, totedge);
}
CustomData_free(&mesh->edata, mesh->totedge); CustomData_free(&mesh->edata, mesh->totedge);
mesh->edata = edata; mesh->edata = edata;
@@ -580,8 +590,9 @@ void MeshImporter::mesh_add_edges(Mesh *mesh, int len)
/* set default flags */ /* set default flags */
medge = &mesh->medge[mesh->totedge]; medge = &mesh->medge[mesh->totedge];
for (int i = 0; i < len; i++, medge++) for (int i = 0; i < len; i++, medge++) {
medge->flag = ME_EDGEDRAW | ME_EDGERENDER | SELECT; medge->flag = ME_EDGEDRAW | ME_EDGERENDER | SELECT;
}
mesh->totedge = totedge; mesh->totedge = totedge;
} }
@@ -688,8 +699,9 @@ void MeshImporter::read_polys(COLLADAFW::Mesh *collada_mesh, Mesh *me)
// the same for vertces normals // the same for vertces normals
unsigned int vertex_normal_indices[3] = { unsigned int vertex_normal_indices[3] = {
first_normal, normal_indices[1], normal_indices[2]}; first_normal, normal_indices[1], normal_indices[2]};
if (!is_flat_face(vertex_normal_indices, nor, 3)) if (!is_flat_face(vertex_normal_indices, nor, 3)) {
mpoly->flag |= ME_SMOOTH; mpoly->flag |= ME_SMOOTH;
}
normal_indices++; normal_indices++;
} }
@@ -700,8 +712,9 @@ void MeshImporter::read_polys(COLLADAFW::Mesh *collada_mesh, Mesh *me)
} }
// Moving cursor to the next triangle fan. // Moving cursor to the next triangle fan.
if (mp_has_normals) if (mp_has_normals) {
normal_indices += 2; normal_indices += 2;
}
position_indices += 2; position_indices += 2;
} }
@@ -752,8 +765,9 @@ void MeshImporter::read_polys(COLLADAFW::Mesh *collada_mesh, Mesh *me)
} }
if (mp_has_normals) { if (mp_has_normals) {
if (!is_flat_face(normal_indices, nor, vcount)) if (!is_flat_face(normal_indices, nor, vcount)) {
mpoly->flag |= ME_SMOOTH; mpoly->flag |= ME_SMOOTH;
}
} }
if (mp->hasColorIndices()) { if (mp->hasColorIndices()) {
@@ -783,8 +797,9 @@ void MeshImporter::read_polys(COLLADAFW::Mesh *collada_mesh, Mesh *me)
start_index += vcount; start_index += vcount;
prim.totpoly++; prim.totpoly++;
if (mp_has_normals) if (mp_has_normals) {
normal_indices += vcount; normal_indices += vcount;
}
position_indices += vcount; position_indices += vcount;
} }
@@ -801,8 +816,9 @@ void MeshImporter::read_polys(COLLADAFW::Mesh *collada_mesh, Mesh *me)
continue; // read the lines later after all the rest is done continue; // read the lines later after all the rest is done
} }
if (mp_has_faces) if (mp_has_faces) {
mat_prim_map[mp->getMaterialId()].push_back(prim); mat_prim_map[mp->getMaterialId()].push_back(prim);
}
} }
geom_uid_mat_mapping_map[collada_mesh->getUniqueId()] = mat_prim_map; geom_uid_mat_mapping_map[collada_mesh->getUniqueId()] = mat_prim_map;
@@ -815,8 +831,9 @@ void MeshImporter::get_vector(float v[3], COLLADAFW::MeshVertexData &arr, int i,
switch (arr.getType()) { switch (arr.getType()) {
case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: { case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: {
COLLADAFW::ArrayPrimitiveType<float> *values = arr.getFloatValues(); COLLADAFW::ArrayPrimitiveType<float> *values = arr.getFloatValues();
if (values->empty()) if (values->empty()) {
return; return;
}
v[0] = (*values)[i++]; v[0] = (*values)[i++];
v[1] = (*values)[i++]; v[1] = (*values)[i++];
@@ -830,8 +847,9 @@ void MeshImporter::get_vector(float v[3], COLLADAFW::MeshVertexData &arr, int i,
} break; } break;
case COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE: { case COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE: {
COLLADAFW::ArrayPrimitiveType<double> *values = arr.getDoubleValues(); COLLADAFW::ArrayPrimitiveType<double> *values = arr.getDoubleValues();
if (values->empty()) if (values->empty()) {
return; return;
}
v[0] = (float)(*values)[i++]; v[0] = (float)(*values)[i++];
v[1] = (float)(*values)[i++]; v[1] = (float)(*values)[i++];
@@ -862,8 +880,9 @@ bool MeshImporter::is_flat_face(unsigned int *nind, COLLADAFW::MeshVertexData &n
float dp = dot_v3v3(a, b); float dp = dot_v3v3(a, b);
if (dp < 0.99999f || dp > 1.00001f) if (dp < 0.99999f || dp > 1.00001f) {
return false; return false;
}
} }
return true; return true;
@@ -871,22 +890,25 @@ bool MeshImporter::is_flat_face(unsigned int *nind, COLLADAFW::MeshVertexData &n
Object *MeshImporter::get_object_by_geom_uid(const COLLADAFW::UniqueId &geom_uid) Object *MeshImporter::get_object_by_geom_uid(const COLLADAFW::UniqueId &geom_uid)
{ {
if (uid_object_map.find(geom_uid) != uid_object_map.end()) if (uid_object_map.find(geom_uid) != uid_object_map.end()) {
return uid_object_map[geom_uid]; return uid_object_map[geom_uid];
}
return NULL; return NULL;
} }
Mesh *MeshImporter::get_mesh_by_geom_uid(const COLLADAFW::UniqueId &mesh_uid) Mesh *MeshImporter::get_mesh_by_geom_uid(const COLLADAFW::UniqueId &mesh_uid)
{ {
if (uid_mesh_map.find(mesh_uid) != uid_mesh_map.end()) if (uid_mesh_map.find(mesh_uid) != uid_mesh_map.end()) {
return uid_mesh_map[mesh_uid]; return uid_mesh_map[mesh_uid];
}
return NULL; return NULL;
} }
std::string *MeshImporter::get_geometry_name(const std::string &mesh_name) std::string *MeshImporter::get_geometry_name(const std::string &mesh_name)
{ {
if (this->mesh_geom_map.find(mesh_name) != this->mesh_geom_map.end()) if (this->mesh_geom_map.find(mesh_name) != this->mesh_geom_map.end()) {
return &this->mesh_geom_map[mesh_name]; return &this->mesh_geom_map[mesh_name];
}
return NULL; return NULL;
} }
@@ -897,18 +919,23 @@ std::string *MeshImporter::get_geometry_name(const std::string &mesh_name)
*/ */
static bool bc_has_same_material_configuration(Object *ob1, Object *ob2) static bool bc_has_same_material_configuration(Object *ob1, Object *ob2)
{ {
if (ob1->totcol != ob2->totcol) if (ob1->totcol != ob2->totcol) {
return false; // not same number of materials return false; // not same number of materials
if (ob1->totcol == 0) }
if (ob1->totcol == 0) {
return false; // no material at all return false; // no material at all
}
for (int index = 0; index < ob1->totcol; index++) { for (int index = 0; index < ob1->totcol; index++) {
if (ob1->matbits[index] != ob2->matbits[index]) if (ob1->matbits[index] != ob2->matbits[index]) {
return false; // shouldn't happen return false; // shouldn't happen
if (ob1->matbits[index] == 0) }
if (ob1->matbits[index] == 0) {
return false; // shouldn't happen return false; // shouldn't happen
if (ob1->mat[index] != ob2->mat[index]) }
if (ob1->mat[index] != ob2->mat[index]) {
return false; // different material assignment return false; // different material assignment
}
} }
return true; return true;
} }
@@ -955,8 +982,9 @@ std::vector<Object *> MeshImporter::get_all_users_of(Mesh *reference_mesh)
if (bc_is_marked(ob)) { if (bc_is_marked(ob)) {
bc_remove_mark(ob); bc_remove_mark(ob);
Mesh *me = (Mesh *)ob->data; Mesh *me = (Mesh *)ob->data;
if (me == reference_mesh) if (me == reference_mesh) {
mesh_users.push_back(ob); mesh_users.push_back(ob);
}
} }
} }
return mesh_users; return mesh_users;
@@ -1098,8 +1126,9 @@ Object *MeshImporter::create_mesh_object(
return NULL; return NULL;
} }
} }
if (!uid_mesh_map[*geom_uid]) if (!uid_mesh_map[*geom_uid]) {
return NULL; return NULL;
}
// name Object // name Object
const std::string &id = node->getName().size() ? node->getName() : node->getOriginalId(); const std::string &id = node->getName().size() ? node->getName() : node->getOriginalId();

View File

@@ -223,8 +223,9 @@ void SceneExporter::writeNode(Object *ob)
colladaNode.addExtraTechniqueChildParameter("blender", con_tag, "target_id", tar_id); colladaNode.addExtraTechniqueChildParameter("blender", con_tag, "target_id", tar_id);
} }
if (cti->flush_constraint_targets) if (cti->flush_constraint_targets) {
cti->flush_constraint_targets(con, &targets, 1); cti->flush_constraint_targets(con, &targets, 1);
}
} }
con = con->next; con = con->next;

View File

@@ -111,8 +111,9 @@ void SkinInfo::borrow_skin_controller_data(const COLLADAFW::SkinControllerData *
/* cannot transfer data for FloatOrDoubleArray, copy values manually */ /* cannot transfer data for FloatOrDoubleArray, copy values manually */
const COLLADAFW::FloatOrDoubleArray &weight = skin->getWeights(); const COLLADAFW::FloatOrDoubleArray &weight = skin->getWeights();
for (unsigned int i = 0; i < weight.getValuesCount(); i++) for (unsigned int i = 0; i < weight.getValuesCount(); i++) {
weights.push_back(bc_get_float_value(weight, i)); weights.push_back(bc_get_float_value(weight, i));
}
unit_converter->dae_matrix_to_mat4_(bind_shape_matrix, skin->getBindShapeMatrix()); unit_converter->dae_matrix_to_mat4_(bind_shape_matrix, skin->getBindShapeMatrix());
} }
@@ -162,8 +163,9 @@ Object *SkinInfo::create_armature(Main *bmain, Scene *scene, ViewLayer *view_lay
Object *SkinInfo::set_armature(Object *ob_arm) Object *SkinInfo::set_armature(Object *ob_arm)
{ {
if (this->ob_arm) if (this->ob_arm) {
return this->ob_arm; return this->ob_arm;
}
this->ob_arm = ob_arm; this->ob_arm = ob_arm;
return ob_arm; return ob_arm;
@@ -203,14 +205,16 @@ bool SkinInfo::uses_joint_or_descendant(COLLADAFW::Node *node)
const COLLADAFW::UniqueId &uid = node->getUniqueId(); const COLLADAFW::UniqueId &uid = node->getUniqueId();
std::vector<JointData>::iterator it; std::vector<JointData>::iterator it;
for (it = joint_data.begin(); it != joint_data.end(); it++) { for (it = joint_data.begin(); it != joint_data.end(); it++) {
if ((*it).joint_uid == uid) if ((*it).joint_uid == uid) {
return true; return true;
}
} }
COLLADAFW::NodePointerArray &children = node->getChildNodes(); COLLADAFW::NodePointerArray &children = node->getChildNodes();
for (unsigned int i = 0; i < children.getCount(); i++) { for (unsigned int i = 0; i < children.getCount(); i++) {
if (uses_joint_or_descendant(children[i])) if (uses_joint_or_descendant(children[i])) {
return true; return true;
}
} }
return false; return false;
@@ -255,8 +259,9 @@ void SkinInfo::link_armature(bContext *C,
const char *name = "Group"; const char *name = "Group";
/* skip joints that have invalid UID */ /* skip joints that have invalid UID */
if ((*it).joint_uid == COLLADAFW::UniqueId::INVALID) if ((*it).joint_uid == COLLADAFW::UniqueId::INVALID) {
continue; continue;
}
/* name group by joint node name */ /* name group by joint node name */
@@ -326,8 +331,9 @@ void SkinInfo::find_root_joints(const std::vector<COLLADAFW::Node *> &root_joint
/* find if joint node is in the tree belonging to the root_joint */ /* find if joint node is in the tree belonging to the root_joint */
if (find_node_in_tree(joint, root)) { if (find_node_in_tree(joint, root)) {
if (std::find(result.begin(), result.end(), root) == result.end()) if (std::find(result.begin(), result.end(), root) == result.end()) {
result.push_back(root); result.push_back(root);
}
} }
} }
} }
@@ -336,13 +342,15 @@ void SkinInfo::find_root_joints(const std::vector<COLLADAFW::Node *> &root_joint
bool SkinInfo::find_node_in_tree(COLLADAFW::Node *node, COLLADAFW::Node *tree_root) bool SkinInfo::find_node_in_tree(COLLADAFW::Node *node, COLLADAFW::Node *tree_root)
{ {
if (node == tree_root) if (node == tree_root) {
return true; return true;
}
COLLADAFW::NodePointerArray &children = tree_root->getChildNodes(); COLLADAFW::NodePointerArray &children = tree_root->getChildNodes();
for (unsigned int i = 0; i < children.getCount(); i++) { for (unsigned int i = 0; i < children.getCount(); i++) {
if (find_node_in_tree(node, children[i])) if (find_node_in_tree(node, children[i])) {
return true; return true;
}
} }
return false; return false;

View File

@@ -86,8 +86,9 @@ void TransformWriter::add_node_transform_ob(COLLADASW::Node &node,
UnitConverter converter; UnitConverter converter;
double d_obmat[4][4]; double d_obmat[4][4];
converter.mat4_to_dae_double(d_obmat, f_obmat); converter.mat4_to_dae_double(d_obmat, f_obmat);
if (limit_precision) if (limit_precision) {
bc_sanitize_mat(d_obmat, LIMITTED_PRECISION); bc_sanitize_mat(d_obmat, LIMITTED_PRECISION);
}
node.addMatrix("transform", d_obmat); node.addMatrix("transform", d_obmat);
break; break;
} }

View File

@@ -73,10 +73,12 @@ int collada_export(bContext *C, ExportSettings *export_settings)
ViewLayer *view_layer = blender_context.get_view_layer(); ViewLayer *view_layer = blender_context.get_view_layer();
int includeFilter = OB_REL_NONE; int includeFilter = OB_REL_NONE;
if (export_settings->include_armatures) if (export_settings->include_armatures) {
includeFilter |= OB_REL_MOD_ARMATURE; includeFilter |= OB_REL_MOD_ARMATURE;
if (export_settings->include_children) }
if (export_settings->include_children) {
includeFilter |= OB_REL_CHILDREN_RECURSIVE; includeFilter |= OB_REL_CHILDREN_RECURSIVE;
}
/* Fetch the complete set of exported objects /* Fetch the complete set of exported objects
* ATTENTION: Invisible objects will not be exported * ATTENTION: Invisible objects will not be exported
@@ -98,8 +100,9 @@ int collada_export(bContext *C, ExportSettings *export_settings)
} }
} }
else { else {
if (export_settings->sort_by_name) if (export_settings->sort_by_name) {
bc_bubble_sort_by_Object_name(export_settings->export_set); bc_bubble_sort_by_Object_name(export_settings->export_set);
}
} }
DocumentExporter exporter(blender_context, export_settings); DocumentExporter exporter(blender_context, export_settings);

View File

@@ -94,9 +94,11 @@ void UnitConverter::mat4_to_dae_double(double out[4][4], float in[4][4])
mat4_to_dae(mat, in); mat4_to_dae(mat, in);
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) for (int j = 0; j < 4; j++) {
out[i][j] = mat[i][j]; out[i][j] = mat[i][j];
}
}
} }
float (&UnitConverter::get_rotation())[4][4] float (&UnitConverter::get_rotation())[4][4]

View File

@@ -83,13 +83,16 @@ extern "C" {
float bc_get_float_value(const COLLADAFW::FloatOrDoubleArray &array, unsigned int index) float bc_get_float_value(const COLLADAFW::FloatOrDoubleArray &array, unsigned int index)
{ {
if (index >= array.getValuesCount()) if (index >= array.getValuesCount()) {
return 0.0f; return 0.0f;
}
if (array.getType() == COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT) if (array.getType() == COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT) {
return array.getFloatValues()->getData()[index]; return array.getFloatValues()->getData()[index];
else }
else {
return array.getDoubleValues()->getData()[index]; return array.getDoubleValues()->getData()[index];
}
} }
/* copied from /editors/object/object_relations.c */ /* copied from /editors/object/object_relations.c */
@@ -97,10 +100,12 @@ int bc_test_parent_loop(Object *par, Object *ob)
{ {
/* test if 'ob' is a parent somewhere in par's parents */ /* test if 'ob' is a parent somewhere in par's parents */
if (par == NULL) if (par == NULL) {
return 0; return 0;
if (ob == par) }
if (ob == par) {
return 1; return 1;
}
return bc_test_parent_loop(par->parent, ob); return bc_test_parent_loop(par->parent, ob);
} }
@@ -110,18 +115,22 @@ bool bc_validateConstraints(bConstraint *con)
const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con); const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con);
/* these we can skip completely (invalid constraints...) */ /* these we can skip completely (invalid constraints...) */
if (cti == NULL) if (cti == NULL) {
return false; return false;
if (con->flag & (CONSTRAINT_DISABLE | CONSTRAINT_OFF)) }
if (con->flag & (CONSTRAINT_DISABLE | CONSTRAINT_OFF)) {
return false; return false;
}
/* these constraints can't be evaluated anyway */ /* these constraints can't be evaluated anyway */
if (cti->evaluate_constraint == NULL) if (cti->evaluate_constraint == NULL) {
return false; return false;
}
/* influence == 0 should be ignored */ /* influence == 0 should be ignored */
if (con->enforce == 0.0f) if (con->enforce == 0.0f) {
return false; return false;
}
/* validation passed */ /* validation passed */
return true; return true;
@@ -171,10 +180,12 @@ std::string bc_get_action_id(std::string action_name,
std::string axis_separator) std::string axis_separator)
{ {
std::string result = action_name + "_" + channel_type; std::string result = action_name + "_" + channel_type;
if (ob_name.length() > 0) if (ob_name.length() > 0) {
result = ob_name + "_" + result; result = ob_name + "_" + result;
if (axis_name.length() > 0) }
if (axis_name.length() > 0) {
result += axis_separator + axis_name; result += axis_separator + axis_name;
}
return translate_id(result); return translate_id(result);
} }
@@ -314,14 +325,16 @@ bool bc_is_root_bone(Bone *aBone, bool deform_bones_only)
Bone *root = NULL; Bone *root = NULL;
Bone *bone = aBone; Bone *bone = aBone;
while (bone) { while (bone) {
if (!(bone->flag & BONE_NO_DEFORM)) if (!(bone->flag & BONE_NO_DEFORM)) {
root = bone; root = bone;
}
bone = bone->parent; bone = bone->parent;
} }
return (aBone == root); return (aBone == root);
} }
else else {
return !(aBone->parent); return !(aBone->parent);
}
} }
int bc_get_active_UVLayer(Object *ob) int bc_get_active_UVLayer(Object *ob)
@@ -455,8 +468,9 @@ void bc_triangulate_mesh(Mesh *me)
bool bc_is_leaf_bone(Bone *bone) bool bc_is_leaf_bone(Bone *bone)
{ {
for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) { for (Bone *child = (Bone *)bone->childbase.first; child; child = child->next) {
if (child->flag & BONE_CONNECTED) if (child->flag & BONE_CONNECTED) {
return false; return false;
}
} }
return true; return true;
} }
@@ -466,8 +480,9 @@ EditBone *bc_get_edit_bone(bArmature *armature, char *name)
EditBone *eBone; EditBone *eBone;
for (eBone = (EditBone *)armature->edbo->first; eBone; eBone = eBone->next) { for (eBone = (EditBone *)armature->edbo->first; eBone; eBone = eBone->next) {
if (STREQ(name, eBone->name)) if (STREQ(name, eBone->name)) {
return eBone; return eBone;
}
} }
return NULL; return NULL;
@@ -481,10 +496,12 @@ int bc_set_layer(int bitfield, int layer, bool enable)
{ {
int bit = 1u << layer; int bit = 1u << layer;
if (enable) if (enable) {
bitfield |= bit; bitfield |= bit;
else }
else {
bitfield &= ~bit; bitfield &= ~bit;
}
return bitfield; return bitfield;
} }
@@ -513,8 +530,9 @@ BoneExtensionManager::~BoneExtensionManager()
for (BoneExtensionMap::iterator ext_it = extended_bones->begin(); for (BoneExtensionMap::iterator ext_it = extended_bones->begin();
ext_it != extended_bones->end(); ext_it != extended_bones->end();
++ext_it) { ++ext_it) {
if (ext_it->second != NULL) if (ext_it->second != NULL) {
delete ext_it->second; delete ext_it->second;
}
} }
extended_bones->clear(); extended_bones->clear();
delete extended_bones; delete extended_bones;
@@ -609,8 +627,9 @@ float *BoneExtended::get_tail()
inline bool isInteger(const std::string &s) inline bool isInteger(const std::string &s)
{ {
if (s.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != '+'))) if (s.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != '+'))) {
return false; return false;
}
char *p; char *p;
strtol(s.c_str(), &p, 10); strtol(s.c_str(), &p, 10);
@@ -706,9 +725,11 @@ void bc_set_IDPropertyMatrix(EditBone *ebone, const char *key, float mat[4][4])
IDProperty *data = IDP_New(IDP_ARRAY, &val, key); IDProperty *data = IDP_New(IDP_ARRAY, &val, key);
float *array = (float *)IDP_Array(data); float *array = (float *)IDP_Array(data);
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) for (int j = 0; j < 4; j++) {
array[4 * i + j] = mat[i][j]; array[4 * i + j] = mat[i][j];
}
}
IDP_AddToGroup(idgroup, data); IDP_AddToGroup(idgroup, data);
} }
@@ -782,9 +803,11 @@ bool bc_get_property_matrix(Bone *bone, std::string key, float mat[4][4])
IDProperty *property = bc_get_IDProperty(bone, key); IDProperty *property = bc_get_IDProperty(bone, key);
if (property && property->type == IDP_ARRAY && property->len == 16) { if (property && property->type == IDP_ARRAY && property->len == 16) {
float *array = (float *)IDP_Array(property); float *array = (float *)IDP_Array(property);
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) for (int j = 0; j < 4; j++) {
mat[i][j] = array[4 * i + j]; mat[i][j] = array[4 * i + j];
}
}
return true; return true;
} }
return false; return false;
@@ -805,8 +828,9 @@ void bc_get_property_vector(Bone *bone, std::string key, float val[3], const flo
*/ */
static bool has_custom_props(Bone *bone, bool enabled, std::string key) static bool has_custom_props(Bone *bone, bool enabled, std::string key)
{ {
if (!enabled) if (!enabled) {
return false; return false;
}
return (bc_get_IDProperty(bone, key + "_x") || bc_get_IDProperty(bone, key + "_y") || return (bc_get_IDProperty(bone, key + "_x") || bc_get_IDProperty(bone, key + "_y") ||
bc_get_IDProperty(bone, key + "_z")); bc_get_IDProperty(bone, key + "_z"));
@@ -817,15 +841,18 @@ void bc_enable_fcurves(bAction *act, char *bone_name)
FCurve *fcu; FCurve *fcu;
char prefix[200]; char prefix[200];
if (bone_name) if (bone_name) {
BLI_snprintf(prefix, sizeof(prefix), "pose.bones[\"%s\"]", bone_name); BLI_snprintf(prefix, sizeof(prefix), "pose.bones[\"%s\"]", bone_name);
}
for (fcu = (FCurve *)act->curves.first; fcu; fcu = fcu->next) { for (fcu = (FCurve *)act->curves.first; fcu; fcu = fcu->next) {
if (bone_name) { if (bone_name) {
if (STREQLEN(fcu->rna_path, prefix, strlen(prefix))) if (STREQLEN(fcu->rna_path, prefix, strlen(prefix))) {
fcu->flag &= ~FCURVE_DISABLED; fcu->flag &= ~FCURVE_DISABLED;
else }
else {
fcu->flag |= FCURVE_DISABLED; fcu->flag |= FCURVE_DISABLED;
}
} }
else { else {
fcu->flag &= ~FCURVE_DISABLED; fcu->flag &= ~FCURVE_DISABLED;
@@ -853,8 +880,9 @@ bool bc_bone_matrix_local_get(Object *ob, Bone *bone, Matrix &mat, bool for_open
invert_m4_m4(ipar, parchan->pose_mat); invert_m4_m4(ipar, parchan->pose_mat);
mul_m4_m4m4(mat, ipar, pchan->pose_mat); mul_m4_m4m4(mat, ipar, pchan->pose_mat);
} }
else else {
copy_m4_m4(mat, pchan->pose_mat); copy_m4_m4(mat, pchan->pose_mat);
}
/* OPEN_SIM_COMPATIBILITY /* OPEN_SIM_COMPATIBILITY
* AFAIK animation to second life is via BVH, but no * AFAIK animation to second life is via BVH, but no
@@ -882,8 +910,9 @@ bool bc_is_animated(BCMatrixSampleMap &values)
{ {
static float MIN_DISTANCE = 0.00001; static float MIN_DISTANCE = 0.00001;
if (values.size() < 2) if (values.size() < 2) {
return false; /* need at least 2 entries to be not flat */ return false; /* need at least 2 entries to be not flat */
}
BCMatrixSampleMap::iterator it; BCMatrixSampleMap::iterator it;
const BCMatrix *refmat = NULL; const BCMatrix *refmat = NULL;
@@ -895,8 +924,9 @@ bool bc_is_animated(BCMatrixSampleMap &values)
continue; continue;
} }
if (!matrix->in_range(*refmat, MIN_DISTANCE)) if (!matrix->in_range(*refmat, MIN_DISTANCE)) {
return true; return true;
}
} }
return false; return false;
} }
@@ -906,21 +936,25 @@ bool bc_has_animations(Object *ob)
/* Check for object, light and camera transform animations */ /* Check for object, light and camera transform animations */
if ((bc_getSceneObjectAction(ob) && bc_getSceneObjectAction(ob)->curves.first) || if ((bc_getSceneObjectAction(ob) && bc_getSceneObjectAction(ob)->curves.first) ||
(bc_getSceneLightAction(ob) && bc_getSceneLightAction(ob)->curves.first) || (bc_getSceneLightAction(ob) && bc_getSceneLightAction(ob)->curves.first) ||
(bc_getSceneCameraAction(ob) && bc_getSceneCameraAction(ob)->curves.first)) (bc_getSceneCameraAction(ob) && bc_getSceneCameraAction(ob)->curves.first)) {
return true; return true;
}
/* Check Material Effect parameter animations. */ /* Check Material Effect parameter animations. */
for (int a = 0; a < ob->totcol; a++) { for (int a = 0; a < ob->totcol; a++) {
Material *ma = give_current_material(ob, a + 1); Material *ma = give_current_material(ob, a + 1);
if (!ma) if (!ma) {
continue; continue;
if (ma->adt && ma->adt->action && ma->adt->action->curves.first) }
if (ma->adt && ma->adt->action && ma->adt->action->curves.first) {
return true; return true;
}
} }
Key *key = BKE_key_from_object(ob); Key *key = BKE_key_from_object(ob);
if ((key && key->adt && key->adt->action) && key->adt->action->curves.first) if ((key && key->adt && key->adt->action) && key->adt->action->curves.first) {
return true; return true;
}
return false; return false;
} }
@@ -932,8 +966,9 @@ bool bc_has_animations(Scene *sce, LinkNode *export_set)
for (node = export_set; node; node = node->next) { for (node = export_set; node; node = node->next) {
Object *ob = (Object *)node->link; Object *ob = (Object *)node->link;
if (bc_has_animations(ob)) if (bc_has_animations(ob)) {
return true; return true;
}
} }
} }
return false; return false;
@@ -1032,12 +1067,15 @@ void bc_create_restpose_mat(BCExportSettings &export_settings,
} }
if (export_settings.get_keep_bind_info()) { if (export_settings.get_keep_bind_info()) {
if (bc_get_IDProperty(bone, "restpose_rot_x")) if (bc_get_IDProperty(bone, "restpose_rot_x")) {
rot[0] = DEG2RADF(bc_get_property(bone, "restpose_rot_x", 0)); rot[0] = DEG2RADF(bc_get_property(bone, "restpose_rot_x", 0));
if (bc_get_IDProperty(bone, "restpose_rot_y")) }
if (bc_get_IDProperty(bone, "restpose_rot_y")) {
rot[1] = DEG2RADF(bc_get_property(bone, "restpose_rot_y", 0)); rot[1] = DEG2RADF(bc_get_property(bone, "restpose_rot_y", 0));
if (bc_get_IDProperty(bone, "restpose_rot_z")) }
if (bc_get_IDProperty(bone, "restpose_rot_z")) {
rot[2] = DEG2RADF(bc_get_property(bone, "restpose_rot_z", 0)); rot[2] = DEG2RADF(bc_get_property(bone, "restpose_rot_z", 0));
}
} }
if (export_settings.get_keep_bind_info()) { if (export_settings.get_keep_bind_info()) {
@@ -1052,12 +1090,13 @@ void bc_create_restpose_mat(BCExportSettings &export_settings,
*/ */
void bc_sanitize_mat(float mat[4][4], int precision) void bc_sanitize_mat(float mat[4][4], int precision)
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) { for (int j = 0; j < 4; j++) {
double val = (double)mat[i][j]; double val = (double)mat[i][j];
val = double_round(val, precision); val = double_round(val, precision);
mat[i][j] = (float)val; mat[i][j] = (float)val;
} }
}
} }
void bc_sanitize_v3(float v[3], int precision) void bc_sanitize_v3(float v[3], int precision)
@@ -1071,9 +1110,11 @@ void bc_sanitize_v3(float v[3], int precision)
void bc_sanitize_mat(double mat[4][4], int precision) void bc_sanitize_mat(double mat[4][4], int precision)
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) for (int j = 0; j < 4; j++) {
mat[i][j] = double_round(mat[i][j], precision); mat[i][j] = double_round(mat[i][j], precision);
}
}
} }
void bc_sanitize_v3(double v[3], int precision) void bc_sanitize_v3(double v[3], int precision)
@@ -1085,23 +1126,29 @@ void bc_sanitize_v3(double v[3], int precision)
void bc_copy_m4_farray(float r[4][4], float *a) void bc_copy_m4_farray(float r[4][4], float *a)
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) for (int j = 0; j < 4; j++) {
r[i][j] = *a++; r[i][j] = *a++;
}
}
} }
void bc_copy_farray_m4(float *r, float a[4][4]) void bc_copy_farray_m4(float *r, float a[4][4])
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) for (int j = 0; j < 4; j++) {
*r++ = a[i][j]; *r++ = a[i][j];
}
}
} }
void bc_copy_darray_m4d(double *r, double a[4][4]) void bc_copy_darray_m4d(double *r, double a[4][4])
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) for (int j = 0; j < 4; j++) {
*r++ = a[i][j]; *r++ = a[i][j];
}
}
} }
void bc_copy_v44_m4d(std::vector<std::vector<double>> &r, double (&a)[4][4]) void bc_copy_v44_m4d(std::vector<std::vector<double>> &r, double (&a)[4][4])

View File

@@ -92,8 +92,9 @@ inline bAction *bc_getSceneObjectAction(Object *ob)
/* Returns Light Action or NULL */ /* Returns Light Action or NULL */
inline bAction *bc_getSceneLightAction(Object *ob) inline bAction *bc_getSceneLightAction(Object *ob)
{ {
if (ob->type != OB_LAMP) if (ob->type != OB_LAMP) {
return NULL; return NULL;
}
Light *lamp = (Light *)ob->data; Light *lamp = (Light *)ob->data;
return (lamp->adt && lamp->adt->action) ? lamp->adt->action : NULL; return (lamp->adt && lamp->adt->action) ? lamp->adt->action : NULL;
@@ -102,8 +103,9 @@ inline bAction *bc_getSceneLightAction(Object *ob)
/* Return Camera Action or NULL */ /* Return Camera Action or NULL */
inline bAction *bc_getSceneCameraAction(Object *ob) inline bAction *bc_getSceneCameraAction(Object *ob)
{ {
if (ob->type != OB_CAMERA) if (ob->type != OB_CAMERA) {
return NULL; return NULL;
}
Camera *camera = (Camera *)ob->data; Camera *camera = (Camera *)ob->data;
return (camera->adt && camera->adt->action) ? camera->adt->action : NULL; return (camera->adt && camera->adt->action) ? camera->adt->action : NULL;
@@ -112,16 +114,18 @@ inline bAction *bc_getSceneCameraAction(Object *ob)
/* returns material action or NULL */ /* returns material action or NULL */
inline bAction *bc_getSceneMaterialAction(Material *ma) inline bAction *bc_getSceneMaterialAction(Material *ma)
{ {
if (ma == NULL) if (ma == NULL) {
return NULL; return NULL;
}
return (ma->adt && ma->adt->action) ? ma->adt->action : NULL; return (ma->adt && ma->adt->action) ? ma->adt->action : NULL;
} }
inline void bc_setSceneObjectAction(bAction *action, Object *ob) inline void bc_setSceneObjectAction(bAction *action, Object *ob)
{ {
if (ob->adt) if (ob->adt) {
ob->adt->action = action; ob->adt->action = action;
}
} }
std::string bc_get_action_id(std::string action_name, std::string bc_get_action_id(std::string action_name,
@@ -167,8 +171,9 @@ inline std::string bc_string_after(const std::string &s, const char c)
inline bool bc_startswith(std::string const &value, std::string const &starting) inline bool bc_startswith(std::string const &value, std::string const &starting)
{ {
if (starting.size() > value.size()) if (starting.size() > value.size()) {
return false; return false;
}
return (value.substr(0, starting.size()) == starting); return (value.substr(0, starting.size()) == starting);
} }

View File

@@ -209,8 +209,9 @@ static void applyarmature_process_selected_rec(bArmature *arm,
bPoseChannel *pchan = BKE_pose_channel_find_name(pose, bone->name); bPoseChannel *pchan = BKE_pose_channel_find_name(pose, bone->name);
const bPoseChannel *pchan_eval = BKE_pose_channel_find_name(pose_eval, bone->name); const bPoseChannel *pchan_eval = BKE_pose_channel_find_name(pose_eval, bone->name);
if (!pchan || !pchan_eval) if (!pchan || !pchan_eval) {
return; return;
}
ApplyArmature_ParentState new_pstate = {.bone = bone}; ApplyArmature_ParentState new_pstate = {.bone = bone};

View File

@@ -104,8 +104,9 @@ void AppCanvas::init()
void AppCanvas::postDraw() void AppCanvas::postDraw()
{ {
for (unsigned int i = 0; i < _StyleModules.size(); i++) { for (unsigned int i = 0; i < _StyleModules.size(); i++) {
if (!_StyleModules[i]->getDisplayed() || !_Layers[i]) if (!_StyleModules[i]->getDisplayed() || !_Layers[i]) {
continue; continue;
}
_Layers[i]->ScaleThickness(thickness()); _Layers[i]->ScaleThickness(thickness());
} }
Canvas::postDraw(); Canvas::postDraw();
@@ -152,12 +153,14 @@ void AppCanvas::readColorPixels(int x, int y, int w, int h, RGBImage &oImage) co
int ii, jj; int ii, jj;
for (int j = 0; j < h; j++) { for (int j = 0; j < h; j++) {
jj = (int)((y - ymin + j) * yfac); jj = (int)((y - ymin + j) * yfac);
if (jj < 0 || jj >= recty) if (jj < 0 || jj >= recty) {
continue; continue;
}
for (int i = 0; i < w; i++) { for (int i = 0; i < w; i++) {
ii = (int)((x - xmin + i) * xfac); ii = (int)((x - xmin + i) * xfac);
if (ii < 0 || ii >= rectx) if (ii < 0 || ii >= rectx) {
continue; continue;
}
memcpy( memcpy(
rgb + (w * j + i) * 3, _pass_diffuse.buf + (rectx * jj + ii) * 3, sizeof(float) * 3); rgb + (w * j + i) * 3, _pass_diffuse.buf + (rectx * jj + ii) * 3, sizeof(float) * 3);
} }
@@ -200,12 +203,14 @@ void AppCanvas::readDepthPixels(int x, int y, int w, int h, GrayImage &oImage) c
int ii, jj; int ii, jj;
for (int j = 0; j < h; j++) { for (int j = 0; j < h; j++) {
jj = (int)((y - ymin + j) * yfac); jj = (int)((y - ymin + j) * yfac);
if (jj < 0 || jj >= recty) if (jj < 0 || jj >= recty) {
continue; continue;
}
for (int i = 0; i < w; i++) { for (int i = 0; i < w; i++) {
ii = (int)((x - xmin + i) * xfac); ii = (int)((x - xmin + i) * xfac);
if (ii < 0 || ii >= rectx) if (ii < 0 || ii >= rectx) {
continue; continue;
}
z[w * j + i] = _pass_z.buf[rectx * jj + ii]; z[w * j + i] = _pass_z.buf[rectx * jj + ii];
} }
} }
@@ -215,10 +220,12 @@ void AppCanvas::readDepthPixels(int x, int y, int w, int h, GrayImage &oImage) c
void AppCanvas::RenderStroke(Stroke *iStroke) void AppCanvas::RenderStroke(Stroke *iStroke)
{ {
if (_basic) if (_basic) {
iStroke->RenderBasic(_Renderer); iStroke->RenderBasic(_Renderer);
else }
else {
iStroke->Render(_Renderer); iStroke->Render(_Renderer);
}
} }
void AppCanvas::update() void AppCanvas::update()

View File

@@ -136,8 +136,9 @@ Controller::~Controller()
{ {
if (NULL != _RootNode) { if (NULL != _RootNode) {
int ref = _RootNode->destroy(); int ref = _RootNode->destroy();
if (0 == ref) if (0 == ref) {
delete _RootNode; delete _RootNode;
}
} }
#if 0 #if 0
@@ -184,8 +185,9 @@ Controller::~Controller()
void Controller::setView(AppView *iView) void Controller::setView(AppView *iView)
{ {
if (NULL == iView) if (NULL == iView) {
return; return;
}
_pView = iView; _pView = iView;
_Canvas->setViewer(_pView); _Canvas->setViewer(_pView);
@@ -279,16 +281,19 @@ int Controller::LoadMesh(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph
_pView->setModel(_RootNode); _pView->setModel(_RootNode);
//_pView->FitBBox(); //_pView->FitBBox();
if (_pRenderMonitor->testBreak()) if (_pRenderMonitor->testBreak()) {
return 0; return 0;
}
if (_EnableViewMapCache) { if (_EnableViewMapCache) {
NodeCamera *cam; NodeCamera *cam;
if (g_freestyle.proj[3][3] != 0.0) if (g_freestyle.proj[3][3] != 0.0) {
cam = new NodeOrthographicCamera; cam = new NodeOrthographicCamera;
else }
else {
cam = new NodePerspectiveCamera; cam = new NodePerspectiveCamera;
}
double proj[16]; double proj[16];
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) { for (int j = 0; j < 4; j++) {
@@ -389,8 +394,9 @@ void Controller::ClearRootNode()
_pView->DetachModel(); _pView->DetachModel();
if (NULL != _RootNode) { if (NULL != _RootNode) {
int ref = _RootNode->destroy(); int ref = _RootNode->destroy();
if (0 == ref) if (0 == ref) {
_RootNode->addRef(); _RootNode->addRef();
}
_RootNode->clearBBox(); _RootNode->clearBBox();
} }
} }
@@ -460,8 +466,9 @@ void Controller::DeleteViewMap(bool freeCache)
void Controller::ComputeViewMap() void Controller::ComputeViewMap()
{ {
if (!_ListOfModels.size()) if (!_ListOfModels.size()) {
return; return;
}
DeleteViewMap(true); DeleteViewMap(true);
@@ -520,8 +527,9 @@ void Controller::ComputeViewMap()
} }
int viewport[4]; int viewport[4];
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
viewport[i] = g_freestyle.viewport[i]; viewport[i] = g_freestyle.viewport[i];
}
#if 0 #if 0
if (G.debug & G_DEBUG_FREESTYLE) { if (G.debug & G_DEBUG_FREESTYLE) {
@@ -554,8 +562,9 @@ void Controller::ComputeViewMap()
printf("Feature lines : %lf\n", duration); printf("Feature lines : %lf\n", duration);
} }
if (_pRenderMonitor->testBreak()) if (_pRenderMonitor->testBreak()) {
return; return;
}
// Builds the view map structure from the flagged WSEdge structure: // Builds the view map structure from the flagged WSEdge structure:
//---------------------------------------------------------- //----------------------------------------------------------
@@ -863,8 +872,9 @@ bool Controller::getComputeSteerableViewMapFlag() const
int Controller::DrawStrokes() int Controller::DrawStrokes()
{ {
if (_ViewMap == 0) if (_ViewMap == 0) {
return 0; return 0;
}
if (G.debug & G_DEBUG_FREESTYLE) { if (G.debug & G_DEBUG_FREESTYLE) {
cout << "\n=== Stroke drawing ===" << endl; cout << "\n=== Stroke drawing ===" << endl;
@@ -1047,15 +1057,17 @@ string Controller::getModulesDir() const
void Controller::resetInterpreter() void Controller::resetInterpreter()
{ {
if (_inter) if (_inter) {
_inter->reset(); _inter->reset();
}
} }
void Controller::displayDensityCurves(int x, int y) void Controller::displayDensityCurves(int x, int y)
{ {
SteerableViewMap *svm = _Canvas->getSteerableViewMap(); SteerableViewMap *svm = _Canvas->getSteerableViewMap();
if (!svm) if (!svm) {
return; return;
}
unsigned int i, j; unsigned int i, j;
typedef vector<Vec3r> densityCurve; typedef vector<Vec3r> densityCurve;
@@ -1065,8 +1077,9 @@ void Controller::displayDensityCurves(int x, int y)
// collect the curves values // collect the curves values
unsigned nbCurves = svm->getNumberOfOrientations() + 1; unsigned nbCurves = svm->getNumberOfOrientations() + 1;
unsigned nbPoints = svm->getNumberOfPyramidLevels(); unsigned nbPoints = svm->getNumberOfPyramidLevels();
if (!nbPoints) if (!nbPoints) {
return; return;
}
// build the density/nbLevels curves for each orientation // build the density/nbLevels curves for each orientation
for (i = 0; i < nbCurves; ++i) { for (i = 0; i < nbCurves; ++i) {

View File

@@ -156,16 +156,20 @@ int BlenderFileLoader::countClippedFaces(float v1[3], float v2[3], float v3[3],
numTris = 2; // tetragon numTris = 2; // tetragon
break; break;
case 2: case 2:
if (sum == 0) if (sum == 0) {
numTris = 3; // pentagon numTris = 3; // pentagon
else }
else {
numTris = 1; // triangle numTris = 1; // triangle
}
break; break;
case 3: case 3:
if (sum == 3 || sum == -3) if (sum == 3 || sum == -3) {
numTris = 0; numTris = 0;
else }
else {
numTris = 2; // tetragon numTris = 2; // tetragon
}
break; break;
} }
return numTris; return numTris;
@@ -188,8 +192,9 @@ void BlenderFileLoader::clipLine(float v1[3], float v2[3], float c[3], float z)
q = v1; q = v1;
} }
double d[3]; double d[3];
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++) {
d[i] = q[i] - p[i]; d[i] = q[i] - p[i];
}
double t = (z - p[2]) / d[2]; double t = (z - p[2]) / d[2];
c[0] = p[0] + t * d[0]; c[0] = p[0] + t * d[0];
c[1] = p[1] + t * d[1]; c[1] = p[1] + t * d[1];
@@ -303,11 +308,13 @@ void BlenderFileLoader::addTriangle(struct LoaderState *ls,
// update the bounding box // update the bounding box
for (j = 0; j < 3; j++) { for (j = 0; j < 3; j++) {
if (ls->minBBox[j] > ls->pv[j]) if (ls->minBBox[j] > ls->pv[j]) {
ls->minBBox[j] = ls->pv[j]; ls->minBBox[j] = ls->pv[j];
}
if (ls->maxBBox[j] < ls->pv[j]) if (ls->maxBBox[j] < ls->pv[j]) {
ls->maxBBox[j] = ls->pv[j]; ls->maxBBox[j] = ls->pv[j];
}
} }
#if 0 #if 0
@@ -329,14 +336,18 @@ void BlenderFileLoader::addTriangle(struct LoaderState *ls,
ls->pmi++; ls->pmi++;
} }
if (fm) if (fm) {
marks |= IndexedFaceSet::FACE_MARK; marks |= IndexedFaceSet::FACE_MARK;
if (em1) }
if (em1) {
marks |= IndexedFaceSet::EDGE_MARK_V1V2; marks |= IndexedFaceSet::EDGE_MARK_V1V2;
if (em2) }
if (em2) {
marks |= IndexedFaceSet::EDGE_MARK_V2V3; marks |= IndexedFaceSet::EDGE_MARK_V2V3;
if (em3) }
if (em3) {
marks |= IndexedFaceSet::EDGE_MARK_V3V1; marks |= IndexedFaceSet::EDGE_MARK_V3V1;
}
*(ls->pm++) = marks; *(ls->pm++) = marks;
} }
@@ -543,8 +554,9 @@ void BlenderFileLoader::insertShapeNode(Object *ob, Mesh *me, int id)
} }
unsigned int numTris = countClippedFaces(v1, v2, v3, clip); unsigned int numTris = countClippedFaces(v1, v2, v3, clip);
if (numTris == 0) if (numTris == 0) {
continue; continue;
}
bool fm = (ffa) ? (ffa[lt->poly].flag & FREESTYLE_FACE_MARK) != 0 : false; bool fm = (ffa) ? (ffa[lt->poly].flag & FREESTYLE_FACE_MARK) != 0 : false;
bool em1 = false, em2 = false, em3 = false; bool em1 = false, em2 = false, em3 = false;
@@ -688,8 +700,9 @@ void BlenderFileLoader::insertShapeNode(Object *ob, Mesh *me, int id)
detri.v = zero; detri.v = zero;
detri.n = 0; detri.n = 0;
for (unsigned int j = 0; j < viSize; j += 3) { for (unsigned int j = 0; j < viSize; j += 3) {
if (i == j) if (i == j) {
continue; continue;
}
vi0 = cleanVIndices[j]; vi0 = cleanVIndices[j];
vi1 = cleanVIndices[j + 1]; vi1 = cleanVIndices[j + 1];
vi2 = cleanVIndices[j + 2]; vi2 = cleanVIndices[j + 2];

View File

@@ -219,8 +219,9 @@ float BlenderStrokeRenderer::get_stroke_vertex_z(void) const
{ {
float z = _z; float z = _z;
BlenderStrokeRenderer *self = const_cast<BlenderStrokeRenderer *>(this); BlenderStrokeRenderer *self = const_cast<BlenderStrokeRenderer *>(this);
if (!(_z < _z_delta * 100000.0f)) if (!(_z < _z_delta * 100000.0f)) {
self->_z_delta *= 10.0f; self->_z_delta *= 10.0f;
}
self->_z += _z_delta; self->_z += _z_delta;
return -z; return -z;
} }
@@ -472,8 +473,9 @@ void BlenderStrokeRenderer::RenderStrokeRepBasic(StrokeRep *iStrokeRep) const
// count visible faces and strip segments // count visible faces and strip segments
test_strip_visibility(strip_vertices, &visible_faces, &visible_segments); test_strip_visibility(strip_vertices, &visible_faces, &visible_segments);
if (visible_faces == 0) if (visible_faces == 0) {
continue; continue;
}
totvert += visible_faces + visible_segments * 2; totvert += visible_faces + visible_segments * 2;
totedge += visible_faces * 2 + visible_segments; totedge += visible_faces * 2 + visible_segments;
@@ -509,14 +511,18 @@ bool BlenderStrokeRenderer::test_triangle_visibility(StrokeVertexRep *svRep[3])
xl = xu = yl = yu = 0; xl = xu = yl = yu = 0;
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
p = svRep[i]->point2d(); p = svRep[i]->point2d();
if (p[0] < 0.0) if (p[0] < 0.0) {
xl++; xl++;
else if (p[0] > _width) }
else if (p[0] > _width) {
xu++; xu++;
if (p[1] < 0.0) }
if (p[1] < 0.0) {
yl++; yl++;
else if (p[1] > _height) }
else if (p[1] > _height) {
yu++; yu++;
}
} }
return !(xl == 3 || xu == 3 || yl == 3 || yu == 3); return !(xl == 3 || xu == 3 || yl == 3 || yu == 3);
} }
@@ -545,8 +551,9 @@ void BlenderStrokeRenderer::test_strip_visibility(Strip::vertex_container &strip
svRep[2] = *(v[2]); svRep[2] = *(v[2]);
if (test_triangle_visibility(svRep)) { if (test_triangle_visibility(svRep)) {
(*visible_faces)++; (*visible_faces)++;
if (!visible) if (!visible) {
(*visible_segments)++; (*visible_segments)++;
}
visible = true; visible = true;
} }
else { else {
@@ -671,8 +678,9 @@ void BlenderStrokeRenderer::GenerateStrokeMesh(StrokeGroup *group, bool hasTex)
// count visible faces and strip segments // count visible faces and strip segments
test_strip_visibility(strip_vertices, &visible_faces, &visible_segments); test_strip_visibility(strip_vertices, &visible_faces, &visible_segments);
if (visible_faces == 0) if (visible_faces == 0) {
continue; continue;
}
v[0] = strip_vertices.begin(); v[0] = strip_vertices.begin();
v[1] = v[0] + 1; v[1] = v[0] + 1;
@@ -869,8 +877,9 @@ Object *BlenderStrokeRenderer::NewMesh() const
Render *BlenderStrokeRenderer::RenderScene(Render * /*re*/, bool render) Render *BlenderStrokeRenderer::RenderScene(Render * /*re*/, bool render)
{ {
Camera *camera = (Camera *)freestyle_scene->camera->data; Camera *camera = (Camera *)freestyle_scene->camera->data;
if (camera->clip_end < _z) if (camera->clip_end < _z) {
camera->clip_end = _z + _z_delta * 100.0f; camera->clip_end = _z + _z_delta * 100.0f;
}
#if 0 #if 0
if (G.debug & G_DEBUG_FREESTYLE) { if (G.debug & G_DEBUG_FREESTYLE) {
cout << "clip_start " << camera->clip_start << ", clip_end " << camera->clip_end << endl; cout << "clip_start " << camera->clip_start << ", clip_end " << camera->clip_end << endl;

View File

@@ -99,8 +99,9 @@ static bCallbackFuncStore load_post_callback_funcstore = {
void FRS_initialize() void FRS_initialize()
{ {
if (freestyle_is_initialized) if (freestyle_is_initialized) {
return; return;
}
pathconfig = new Config::Path; pathconfig = new Config::Path;
controller = new Controller(); controller = new Controller();
@@ -166,9 +167,10 @@ static void init_view(Render *re)
cout << "\n=== Dimensions of the 2D image coordinate system ===" << endl; cout << "\n=== Dimensions of the 2D image coordinate system ===" << endl;
cout << "Width : " << width << endl; cout << "Width : " << width << endl;
cout << "Height : " << height << endl; cout << "Height : " << height << endl;
if (re->r.mode & R_BORDER) if (re->r.mode & R_BORDER) {
cout << "Border : (" << xmin << ", " << ymin << ") - (" << xmax << ", " << ymax << ")" cout << "Border : (" << xmin << ", " << ymin << ") - (" << xmax << ", " << ymax << ")"
<< endl; << endl;
}
cout << "Unit line thickness : " << thickness << " pixel(s)" << endl; cout << "Unit line thickness : " << thickness << " pixel(s)" << endl;
} }
} }
@@ -196,8 +198,9 @@ static char *escape_quotes(char *name)
char *s = (char *)MEM_mallocN(strlen(name) * 2 + 1, "escape_quotes"); char *s = (char *)MEM_mallocN(strlen(name) * 2 + 1, "escape_quotes");
char *p = s; char *p = s;
while (*name) { while (*name) {
if (*name == '\'') if (*name == '\'') {
*(p++) = '\\'; *(p++) = '\\';
}
*(p++) = *(name++); *(p++) = *(name++);
} }
*p = '\0'; *p = '\0';
@@ -231,54 +234,71 @@ static bool test_edge_type_conditions(struct edge_type_condition *conditions,
int num_non_target_negative_conditions = 0; int num_non_target_negative_conditions = 0;
for (int i = 0; i < num_edge_types; i++) { for (int i = 0; i < num_edge_types; i++) {
if (conditions[i].edge_type == target) if (conditions[i].edge_type == target) {
target_condition = conditions[i].value; target_condition = conditions[i].value;
else if (conditions[i].value > 0) }
else if (conditions[i].value > 0) {
++num_non_target_positive_conditions; ++num_non_target_positive_conditions;
else if (conditions[i].value < 0) }
else if (conditions[i].value < 0) {
++num_non_target_negative_conditions; ++num_non_target_negative_conditions;
}
} }
if (distinct) { if (distinct) {
// In this case, the 'target' edge type is assumed to appear on distinct edge // In this case, the 'target' edge type is assumed to appear on distinct edge
// of its own and never together with other edge types. // of its own and never together with other edge types.
if (logical_and) { if (logical_and) {
if (num_non_target_positive_conditions > 0) if (num_non_target_positive_conditions > 0) {
return false; return false;
if (target_condition > 0) }
if (target_condition > 0) {
return true; return true;
if (target_condition < 0) }
if (target_condition < 0) {
return false; return false;
if (num_non_target_negative_conditions > 0) }
if (num_non_target_negative_conditions > 0) {
return true; return true;
}
} }
else { else {
if (target_condition > 0) if (target_condition > 0) {
return true; return true;
if (num_non_target_negative_conditions > 0) }
if (num_non_target_negative_conditions > 0) {
return true; return true;
if (target_condition < 0) }
if (target_condition < 0) {
return false; return false;
if (num_non_target_positive_conditions > 0) }
if (num_non_target_positive_conditions > 0) {
return false; return false;
}
} }
} }
else { else {
// In this case, the 'target' edge type may appear together with other edge types. // In this case, the 'target' edge type may appear together with other edge types.
if (target_condition > 0) if (target_condition > 0) {
return true; return true;
if (target_condition < 0) }
if (target_condition < 0) {
return true; return true;
}
if (logical_and) { if (logical_and) {
if (num_non_target_positive_conditions > 0) if (num_non_target_positive_conditions > 0) {
return false; return false;
if (num_non_target_negative_conditions > 0) }
if (num_non_target_negative_conditions > 0) {
return true; return true;
}
} }
else { else {
if (num_non_target_negative_conditions > 0) if (num_non_target_negative_conditions > 0) {
return true; return true;
if (num_non_target_positive_conditions > 0) }
if (num_non_target_positive_conditions > 0) {
return false; return false;
}
} }
} }
return true; return true;
@@ -291,10 +311,12 @@ static void prepare(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph)
re->stats_draw(re->sdh, &re->i); re->stats_draw(re->sdh, &re->i);
re->i.infostr = NULL; re->i.infostr = NULL;
if (controller->LoadMesh( if (controller->LoadMesh(
re, view_layer, depsgraph)) // returns if scene cannot be loaded or if empty re, view_layer, depsgraph)) { // returns if scene cannot be loaded or if empty
return; return;
if (re->test_break(re->tbh)) }
if (re->test_break(re->tbh)) {
return; return;
}
// add style modules // add style modules
FreestyleConfig *config = &view_layer->freestyle_config; FreestyleConfig *config = &view_layer->freestyle_config;
@@ -316,8 +338,9 @@ static void prepare(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph)
const char *id_name = module_conf->script->id.name + 2; const char *id_name = module_conf->script->id.name + 2;
if (G.debug & G_DEBUG_FREESTYLE) { if (G.debug & G_DEBUG_FREESTYLE) {
cout << " " << layer_count + 1 << ": " << id_name; cout << " " << layer_count + 1 << ": " << id_name;
if (module_conf->script->name) if (module_conf->script->name) {
cout << " (" << module_conf->script->name << ")"; cout << " (" << module_conf->script->name << ")";
}
cout << endl; cout << endl;
} }
controller->InsertStyleModule(layer_count, id_name, module_conf->script); controller->InsertStyleModule(layer_count, id_name, module_conf->script);
@@ -373,12 +396,15 @@ static void prepare(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph)
else { else {
// conditions for feature edge selection by edge types // conditions for feature edge selection by edge types
for (int i = 0; i < num_edge_types; i++) { for (int i = 0; i < num_edge_types; i++) {
if (!(lineset->edge_types & conditions[i].edge_type)) if (!(lineset->edge_types & conditions[i].edge_type)) {
conditions[i].value = 0; // no condition specified conditions[i].value = 0; // no condition specified
else if (!(lineset->exclude_edge_types & conditions[i].edge_type)) }
else if (!(lineset->exclude_edge_types & conditions[i].edge_type)) {
conditions[i].value = 1; // condition: X conditions[i].value = 1; // condition: X
else }
else {
conditions[i].value = -1; // condition: NOT X conditions[i].value = -1; // condition: NOT X
}
} }
// logical operator for the selection conditions // logical operator for the selection conditions
bool logical_and = ((lineset->flags & FREESTYLE_LINESET_FE_AND) != 0); bool logical_and = ((lineset->flags & FREESTYLE_LINESET_FE_AND) != 0);
@@ -388,8 +414,9 @@ static void prepare(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph)
// Inclusive equivalent using De Morgan's laws: // Inclusive equivalent using De Morgan's laws:
// - NOT (X OR Y) --> (NOT X) AND (NOT Y) // - NOT (X OR Y) --> (NOT X) AND (NOT Y)
// - NOT (X AND Y) --> (NOT X) OR (NOT Y) // - NOT (X AND Y) --> (NOT X) OR (NOT Y)
for (int i = 0; i < num_edge_types; i++) for (int i = 0; i < num_edge_types; i++) {
conditions[i].value *= -1; conditions[i].value *= -1;
}
logical_and = !logical_and; logical_and = !logical_and;
} }
if (test_edge_type_conditions( if (test_edge_type_conditions(
@@ -470,8 +497,9 @@ static void prepare(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph)
cout << " Z = " << (z ? "enabled" : "disabled") << endl; cout << " Z = " << (z ? "enabled" : "disabled") << endl;
} }
if (controller->hitViewMapCache()) if (controller->hitViewMapCache()) {
return; return;
}
// compute view map // compute view map
re->i.infostr = IFACE_("Freestyle: View map creation"); re->i.infostr = IFACE_("Freestyle: View map creation");
@@ -486,8 +514,9 @@ void FRS_composite_result(Render *re, ViewLayer *view_layer, Render *freestyle_r
float *src, *dest, *pixSrc, *pixDest; float *src, *dest, *pixSrc, *pixDest;
int x, y, rectx, recty; int x, y, rectx, recty;
if (freestyle_render == NULL || freestyle_render->result == NULL) if (freestyle_render == NULL || freestyle_render->result == NULL) {
return; return;
}
rl = render_get_active_layer(freestyle_render, freestyle_render->result); rl = render_get_active_layer(freestyle_render, freestyle_render->result);
if (!rl) { if (!rl) {
@@ -553,8 +582,9 @@ static int displayed_layer_count(ViewLayer *view_layer)
(FreestyleModuleConfig *)view_layer->freestyle_config.modules.first; (FreestyleModuleConfig *)view_layer->freestyle_config.modules.first;
module; module;
module = module->next) { module = module->next) {
if (module->script && module->is_displayed) if (module->script && module->is_displayed) {
count++; count++;
}
} }
break; break;
case FREESTYLE_CONTROL_EDITOR_MODE: case FREESTYLE_CONTROL_EDITOR_MODE:
@@ -562,8 +592,9 @@ static int displayed_layer_count(ViewLayer *view_layer)
(FreestyleLineSet *)view_layer->freestyle_config.linesets.first; (FreestyleLineSet *)view_layer->freestyle_config.linesets.first;
lineset; lineset;
lineset = lineset->next) { lineset = lineset->next) {
if (lineset->flags & FREESTYLE_LINESET_ENABLED) if (lineset->flags & FREESTYLE_LINESET_ENABLED) {
count++; count++;
}
} }
break; break;
} }
@@ -599,8 +630,9 @@ Render *FRS_do_stroke_rendering(Render *re, ViewLayer *view_layer, int render)
{ {
Render *freestyle_render = NULL; Render *freestyle_render = NULL;
if (!render) if (!render) {
return controller->RenderStrokes(re, false); return controller->RenderStrokes(re, false);
}
RenderMonitor monitor(re); RenderMonitor monitor(re);
controller->setRenderMonitor(&monitor); controller->setRenderMonitor(&monitor);
@@ -704,17 +736,20 @@ void FRS_copy_active_lineset(FreestyleConfig *config)
void FRS_paste_active_lineset(FreestyleConfig *config) void FRS_paste_active_lineset(FreestyleConfig *config)
{ {
if (!lineset_copied) if (!lineset_copied) {
return; return;
}
FreestyleLineSet *lineset = BKE_freestyle_lineset_get_active(config); FreestyleLineSet *lineset = BKE_freestyle_lineset_get_active(config);
if (lineset) { if (lineset) {
if (lineset->linestyle) if (lineset->linestyle) {
id_us_min(&lineset->linestyle->id); id_us_min(&lineset->linestyle->id);
}
lineset->linestyle = lineset_buffer.linestyle; lineset->linestyle = lineset_buffer.linestyle;
if (lineset->linestyle) if (lineset->linestyle) {
id_us_plus(&lineset->linestyle->id); id_us_plus(&lineset->linestyle->id);
}
lineset->flags = lineset_buffer.flags; lineset->flags = lineset_buffer.flags;
lineset->selection = lineset_buffer.selection; lineset->selection = lineset_buffer.selection;
lineset->qi = lineset_buffer.qi; lineset->qi = lineset_buffer.qi;

View File

@@ -59,10 +59,12 @@ template<class Point> class BBox {
return; return;
} }
for (unsigned int i = 0; i < Point::dim(); i++) { for (unsigned int i = 0; i < Point::dim(); i++) {
if (p[i] < _min[i]) if (p[i] < _min[i]) {
_min[i] = p[i]; _min[i] = p[i];
else if (p[i] > _max[i]) }
else if (p[i] > _max[i]) {
_max[i] = p[i]; _max[i] = p[i];
}
} }
_empty = false; _empty = false;
} }
@@ -106,10 +108,12 @@ template<class Point> class BBox {
} }
else { else {
for (unsigned int i = 0; i < Point::dim(); i++) { for (unsigned int i = 0; i < Point::dim(); i++) {
if (b.getMin()[i] < _min[i]) if (b.getMin()[i] < _min[i]) {
_min[i] = b.getMin()[i]; _min[i] = b.getMin()[i];
if (b.getMax()[i] > _max[i]) }
if (b.getMax()[i] > _max[i]) {
_max[i] = b.getMax()[i]; _max[i] = b.getMax()[i];
}
} }
} }
return *this; return *this;
@@ -117,11 +121,13 @@ template<class Point> class BBox {
inline bool inside(const Point &p) inline bool inside(const Point &p)
{ {
if (empty()) if (empty()) {
return false; return false;
}
for (unsigned int i = 0; i < Point::dim(); i++) { for (unsigned int i = 0; i < Point::dim(); i++) {
if ((_min[i] > p[i]) || (_max[i] < p[i])) if ((_min[i] > p[i]) || (_max[i] < p[i])) {
return false; return false;
}
} }
return true; return true;
} }

View File

@@ -37,14 +37,16 @@ BezierCurveSegment::~BezierCurveSegment()
void BezierCurveSegment::AddControlPoint(const Vec2d &iPoint) void BezierCurveSegment::AddControlPoint(const Vec2d &iPoint)
{ {
_ControlPolygon.push_back(iPoint); _ControlPolygon.push_back(iPoint);
if (_ControlPolygon.size() == 4) if (_ControlPolygon.size() == 4) {
Build(); Build();
}
} }
void BezierCurveSegment::Build() void BezierCurveSegment::Build()
{ {
if (_ControlPolygon.size() != 4) if (_ControlPolygon.size() != 4) {
return; return;
}
// Compute the rightmost part of the matrix: // Compute the rightmost part of the matrix:
vector<Vec2d>::const_iterator p0, p1, p2, p3; vector<Vec2d>::const_iterator p0, p1, p2, p3;
@@ -92,8 +94,9 @@ BezierCurve::BezierCurve(vector<Vec2d> &iPoints, double error)
int i = 0; int i = 0;
vector<Vec2d>::iterator v, vend; vector<Vec2d>::iterator v, vend;
for (v = curve.begin(), vend = curve.end(); v != vend; ++v) { for (v = curve.begin(), vend = curve.end(); v != vend; ++v) {
if ((i == 0) || (i % 4 != 0)) if ((i == 0) || (i % 4 != 0)) {
AddControlPoint(*v); AddControlPoint(*v);
}
++i; ++i;
} }
} }
@@ -102,11 +105,13 @@ BezierCurve::~BezierCurve()
{ {
if (!_Segments.empty()) { if (!_Segments.empty()) {
vector<BezierCurveSegment *>::iterator v, vend; vector<BezierCurveSegment *>::iterator v, vend;
for (v = _Segments.begin(), vend = _Segments.end(); v != vend; ++v) for (v = _Segments.begin(), vend = _Segments.end(); v != vend; ++v) {
delete *v; delete *v;
}
} }
if (_currentSegment) if (_currentSegment) {
delete _currentSegment; delete _currentSegment;
}
} }
void BezierCurve::AddControlPoint(const Vec2d &iPoint) void BezierCurve::AddControlPoint(const Vec2d &iPoint)

View File

@@ -30,12 +30,14 @@ namespace Freestyle {
void FastGrid::clear() void FastGrid::clear()
{ {
if (!_cells) if (!_cells) {
return; return;
}
for (unsigned int i = 0; i < _cells_size; i++) { for (unsigned int i = 0; i < _cells_size; i++) {
if (_cells[i]) if (_cells[i]) {
delete _cells[i]; delete _cells[i];
}
} }
delete[] _cells; delete[] _cells;
_cells = NULL; _cells = NULL;

View File

@@ -266,8 +266,9 @@ static double NewtonRaphsonRootFind(BezierCurve Q, Vector2 P, double u)
(Q_u[1] - P[1]) * (Q2_u[1]); (Q_u[1] - P[1]) * (Q2_u[1]);
/* u = u - f(u)/f'(u) */ /* u = u - f(u)/f'(u) */
if (denominator == 0) // FIXME if (denominator == 0) { // FIXME
return u; return u;
}
uPrime = u - (numerator / denominator); uPrime = u - (numerator / denominator);
return uPrime; return uPrime;
} }
@@ -472,8 +473,9 @@ FitCurveWrapper::~FitCurveWrapper()
void FitCurveWrapper::DrawBezierCurve(int n, Vector2 *curve) void FitCurveWrapper::DrawBezierCurve(int n, Vector2 *curve)
{ {
for (int i = 0; i <= n; ++i) for (int i = 0; i <= n; ++i) {
_vertices.push_back(curve[i]); _vertices.push_back(curve[i]);
}
} }
void FitCurveWrapper::FitCurve(vector<Vec2d> &data, vector<Vec2d> &oCurve, double error) void FitCurveWrapper::FitCurve(vector<Vec2d> &data, vector<Vec2d> &oCurve, double error)

View File

@@ -115,8 +115,9 @@ void GeomCleaner::CompressIndexedVertexArray(const float *iVertices,
i = 1; i = 1;
for (; v != vertices.end(); v++) { for (; v != vertices.end(); v++) {
current = *v; current = *v;
if (current == previous) if (current == previous) {
mapVertex[i] = compressedVertices.size() - 1; mapVertex[i] = compressedVertices.size() - 1;
}
else { else {
compressedVertices.push_back(current); compressedVertices.push_back(current);
mapVertex[i] = compressedVertices.size() - 1; mapVertex[i] = compressedVertices.size() - 1;
@@ -205,8 +206,9 @@ void GeomCleaner::CleanIndexedVertexArray(const float *iVertices,
typedef map<Vec3f, unsigned> cleanHashTable; typedef map<Vec3f, unsigned> cleanHashTable;
vector<Vec3f> vertices; vector<Vec3f> vertices;
unsigned i; unsigned i;
for (i = 0; i < iVSize; i += 3) for (i = 0; i < iVSize; i += 3) {
vertices.push_back(Vec3f(iVertices[i], iVertices[i + 1], iVertices[i + 2])); vertices.push_back(Vec3f(iVertices[i], iVertices[i + 1], iVertices[i + 2]));
}
cleanHashTable ht; cleanHashTable ht;
vector<unsigned> newIndices; vector<unsigned> newIndices;
@@ -244,8 +246,9 @@ void GeomCleaner::CleanIndexedVertexArray(const float *iVertices,
// map new indices: // map new indices:
*oIndices = new unsigned[iISize]; *oIndices = new unsigned[iISize];
for (i = 0; i < iISize; i++) for (i = 0; i < iISize; i++) {
(*oIndices)[i] = 3 * newIndices[iIndices[i] / 3]; (*oIndices)[i] = 3 * newIndices[iIndices[i] / 3];
}
} }
} /* namespace Freestyle */ } /* namespace Freestyle */

View File

@@ -76,8 +76,9 @@ intersection_test intersect2dSeg2dSeg(
// Check signs of r3 and r4. If both point 3 and point 4 lie on same side of line 1, // Check signs of r3 and r4. If both point 3 and point 4 lie on same side of line 1,
// the line segments do not intersect. // the line segments do not intersect.
if (r3 != 0 && r4 != 0 && r3 * r4 > 0.0) if (r3 != 0 && r4 != 0 && r3 * r4 > 0.0) {
return (DONT_INTERSECT); return (DONT_INTERSECT);
}
// Compute a2, b2, c2 // Compute a2, b2, c2
a2 = p4[1] - p3[1]; a2 = p4[1] - p3[1];
@@ -90,13 +91,15 @@ intersection_test intersect2dSeg2dSeg(
// Check signs of r1 and r2. If both point 1 and point 2 lie on same side of second line // Check signs of r1 and r2. If both point 1 and point 2 lie on same side of second line
// segment, the line segments do not intersect. // segment, the line segments do not intersect.
if (r1 != 0 && r2 != 0 && r1 * r2 > 0.0) if (r1 != 0 && r2 != 0 && r1 * r2 > 0.0) {
return (DONT_INTERSECT); return (DONT_INTERSECT);
}
// Line segments intersect: compute intersection point. // Line segments intersect: compute intersection point.
denom = a1 * b2 - a2 * b1; denom = a1 * b2 - a2 * b1;
if (fabs(denom) < M_EPSILON) if (fabs(denom) < M_EPSILON) {
return (COLINEAR); return (COLINEAR);
}
num = b1 * c2 - b2 * c1; num = b1 * c2 - b2 * c1;
res[0] = num / denom; res[0] = num / denom;
@@ -125,8 +128,9 @@ intersection_test intersect2dLine2dLine(
// Line segments intersect: compute intersection point. // Line segments intersect: compute intersection point.
denom = a1 * b2 - a2 * b1; denom = a1 * b2 - a2 * b1;
if (fabs(denom) < M_EPSILON) if (fabs(denom) < M_EPSILON) {
return (COLINEAR); return (COLINEAR);
}
num = b1 * c2 - b2 * c1; num = b1 * c2 - b2 * c1;
res[0] = num / denom; res[0] = num / denom;
@@ -160,8 +164,9 @@ intersection_test intersect2dSeg2dSegParametric(const Vec2r &p1,
// Check signs of r3 and r4. If both point 3 and point 4 lie on same side of line 1, // Check signs of r3 and r4. If both point 3 and point 4 lie on same side of line 1,
// the line segments do not intersect. // the line segments do not intersect.
if (r3 != 0 && r4 != 0 && r3 * r4 > 0.0) if (r3 != 0 && r4 != 0 && r3 * r4 > 0.0) {
return (DONT_INTERSECT); return (DONT_INTERSECT);
}
// Compute a2, b2, c2 // Compute a2, b2, c2
a2 = p4[1] - p3[1]; a2 = p4[1] - p3[1];
@@ -174,13 +179,15 @@ intersection_test intersect2dSeg2dSegParametric(const Vec2r &p1,
// Check signs of r1 and r2. If both point 1 and point 2 lie on same side of second line // Check signs of r1 and r2. If both point 1 and point 2 lie on same side of second line
// segment, the line segments do not intersect. // segment, the line segments do not intersect.
if (r1 != 0 && r2 != 0 && r1 * r2 > 0.0) if (r1 != 0 && r2 != 0 && r1 * r2 > 0.0) {
return (DONT_INTERSECT); return (DONT_INTERSECT);
}
// Line segments intersect: compute intersection point. // Line segments intersect: compute intersection point.
denom = a1 * b2 - a2 * b1; denom = a1 * b2 - a2 * b1;
if (fabs(denom) < epsilon) if (fabs(denom) < epsilon) {
return (COLINEAR); return (COLINEAR);
}
real d1, e1; real d1, e1;
@@ -387,26 +394,30 @@ bool overlapTriangleBox(Vec3r &boxcenter, Vec3r &boxhalfsize, Vec3r triverts[3])
// test in X-direction // test in X-direction
FINDMINMAX(v0[X], v1[X], v2[X], min, max); FINDMINMAX(v0[X], v1[X], v2[X], min, max);
if (min > boxhalfsize[X] || max < -boxhalfsize[X]) if (min > boxhalfsize[X] || max < -boxhalfsize[X]) {
return false; return false;
}
// test in Y-direction // test in Y-direction
FINDMINMAX(v0[Y], v1[Y], v2[Y], min, max); FINDMINMAX(v0[Y], v1[Y], v2[Y], min, max);
if (min > boxhalfsize[Y] || max < -boxhalfsize[Y]) if (min > boxhalfsize[Y] || max < -boxhalfsize[Y]) {
return false; return false;
}
// test in Z-direction // test in Z-direction
FINDMINMAX(v0[Z], v1[Z], v2[Z], min, max); FINDMINMAX(v0[Z], v1[Z], v2[Z], min, max);
if (min > boxhalfsize[Z] || max < -boxhalfsize[Z]) if (min > boxhalfsize[Z] || max < -boxhalfsize[Z]) {
return false; return false;
}
// Bullet 2: // Bullet 2:
// test if the box intersects the plane of the triangle // test if the box intersects the plane of the triangle
// compute plane equation of triangle: normal * x + d = 0 // compute plane equation of triangle: normal * x + d = 0
normal = e0 ^ e1; normal = e0 ^ e1;
d = -(normal * v0); // plane eq: normal.x + d = 0 d = -(normal * v0); // plane eq: normal.x + d = 0
if (!overlapPlaneBox(normal, d, boxhalfsize)) if (!overlapPlaneBox(normal, d, boxhalfsize)) {
return false; return false;
}
return true; // box and triangle overlaps return true; // box and triangle overlaps
} }
@@ -453,24 +464,28 @@ bool intersectRayTriangle(const Vec3r &orig,
if (det > epsilon) { if (det > epsilon) {
u = tvec * pvec; u = tvec * pvec;
if (u < 0.0 || u > det) if (u < 0.0 || u > det) {
return false; return false;
}
// calculate V parameter and test bounds // calculate V parameter and test bounds
v = dir * qvec; v = dir * qvec;
if (v < 0.0 || u + v > det) if (v < 0.0 || u + v > det) {
return false; return false;
}
} }
else if (det < -epsilon) { else if (det < -epsilon) {
// calculate U parameter and test bounds // calculate U parameter and test bounds
u = tvec * pvec; u = tvec * pvec;
if (u > 0.0 || u < det) if (u > 0.0 || u < det) {
return false; return false;
}
// calculate V parameter and test bounds // calculate V parameter and test bounds
v = dir * qvec; v = dir * qvec;
if (v > 0.0 || u + v < det) if (v > 0.0 || u + v < det) {
return false; return false;
}
} }
else { else {
return false; // ray is parallell to the plane of the triangle return false; // ray is parallell to the plane of the triangle
@@ -496,16 +511,19 @@ intersection_test intersectRayPlane(const Vec3r &orig,
real denom = norm * dir; real denom = norm * dir;
if (fabs(denom) <= epsilon) { // plane and ray are parallel if (fabs(denom) <= epsilon) { // plane and ray are parallel
if (fabs((norm * orig) + d) <= epsilon) if (fabs((norm * orig) + d) <= epsilon) {
return COINCIDENT; // plane and ray are coincident return COINCIDENT; // plane and ray are coincident
else }
else {
return COLINEAR; return COLINEAR;
}
} }
t = -(d + (norm * orig)) / denom; t = -(d + (norm * orig)) / denom;
if (t < 0.0f) if (t < 0.0f) {
return DONT_INTERSECT; return DONT_INTERSECT;
}
return DO_INTERSECT; return DO_INTERSECT;
} }
@@ -535,20 +553,26 @@ bool intersectRayBBox(const Vec3r &orig,
tmax = (bounds[1 - sign[0]].x() - orig.x()) * inv_direction.x(); tmax = (bounds[1 - sign[0]].x() - orig.x()) * inv_direction.x();
tymin = (bounds[sign[1]].y() - orig.y()) * inv_direction.y(); tymin = (bounds[sign[1]].y() - orig.y()) * inv_direction.y();
tymax = (bounds[1 - sign[1]].y() - orig.y()) * inv_direction.y(); tymax = (bounds[1 - sign[1]].y() - orig.y()) * inv_direction.y();
if ((tmin > tymax) || (tymin > tmax)) if ((tmin > tymax) || (tymin > tmax)) {
return false; return false;
if (tymin > tmin) }
if (tymin > tmin) {
tmin = tymin; tmin = tymin;
if (tymax < tmax) }
if (tymax < tmax) {
tmax = tymax; tmax = tymax;
}
tzmin = (bounds[sign[2]].z() - orig.z()) * inv_direction.z(); tzmin = (bounds[sign[2]].z() - orig.z()) * inv_direction.z();
tzmax = (bounds[1 - sign[2]].z() - orig.z()) * inv_direction.z(); tzmax = (bounds[1 - sign[2]].z() - orig.z()) * inv_direction.z();
if ((tmin > tzmax) || (tzmin > tmax)) if ((tmin > tzmax) || (tzmin > tmax)) {
return false; return false;
if (tzmin > tmin) }
if (tzmin > tmin) {
tmin = tzmin; tmin = tzmin;
if (tzmax < tmax) }
if (tzmax < tmax) {
tmax = tzmax; tmax = tzmax;
}
return ((tmin < t1) && (tmax > t0)); return ((tmin < t1) && (tmax > t0));
} }
@@ -571,14 +595,17 @@ bool includePointTriangle(const Vec3r &P, const Vec3r &A, const Vec3r &B, const
K.normalize(); K.normalize();
L.normalize(); L.normalize();
if (J * N < 0) if (J * N < 0) {
return false; // on the right of AB return false; // on the right of AB
}
if (K * N < 0) if (K * N < 0) {
return false; // on the right of BC return false; // on the right of BC
}
if (L * N < 0) if (L * N < 0) {
return false; // on the right of CA return false; // on the right of CA
}
return true; return true;
} }
@@ -589,8 +616,9 @@ void transformVertex(const Vec3r &vert, const Matrix44r &matrix, Vec3r &res)
real scale; real scale;
for (unsigned int j = 0; j < 4; j++) { for (unsigned int j = 0; j < 4; j++) {
scale = hvert[j]; scale = hvert[j];
for (unsigned int i = 0; i < 4; i++) for (unsigned int i = 0; i < 4; i++) {
res_tmp[i] += matrix(i, j) * scale; res_tmp[i] += matrix(i, j) * scale;
}
} }
res[0] = res_tmp.x(); res[0] = res_tmp.x();
@@ -612,8 +640,9 @@ Vec3r rotateVector(const Matrix44r &mat, const Vec3r &v)
Vec3r res; Vec3r res;
for (unsigned int i = 0; i < 3; i++) { for (unsigned int i = 0; i < 3; i++) {
res[i] = 0; res[i] = 0;
for (unsigned int j = 0; j < 3; j++) for (unsigned int j = 0; j < 3; j++) {
res[i] += mat(i, j) * v[j]; res[i] += mat(i, j) * v[j];
}
} }
res.normalize(); res.normalize();
return res; return res;
@@ -698,8 +727,9 @@ void fromCameraToWorld(const Vec3r &p, Vec3r &q, const real model_view_matrix[4]
}; };
for (unsigned short i = 0; i < 3; i++) { for (unsigned short i = 0; i < 3; i++) {
q[i] = 0.0; q[i] = 0.0;
for (unsigned short j = 0; j < 3; j++) for (unsigned short j = 0; j < 3; j++) {
q[i] += model_view_matrix[j][i] * (p[j] - translation[j]); q[i] += model_view_matrix[j][i] * (p[j] - translation[j]);
}
} }
} }
@@ -718,8 +748,9 @@ void fromCameraToWorld(const Vec3r &p, Vec3r &q, const real model_view_matrix[4]
inline bool intersect2dSegPoly(Vec2r *seg, Vec2r *poly, unsigned n) inline bool intersect2dSegPoly(Vec2r *seg, Vec2r *poly, unsigned n)
{ {
if (seg[0] == seg[1]) if (seg[0] == seg[1]) {
return false; return false;
}
real tE = 0; // the maximum entering segment parameter real tE = 0; // the maximum entering segment parameter
real tL = 1; // the minimum leaving segment parameter real tL = 1; // the minimum leaving segment parameter
@@ -732,25 +763,29 @@ inline bool intersect2dSegPoly(Vec2r *seg, Vec2r *poly, unsigned n)
N = PERP(e, seg[0] - poly[i]); N = PERP(e, seg[0] - poly[i]);
D = -PERP(e, dseg); D = -PERP(e, dseg);
if (fabs(D) < M_EPSILON) { if (fabs(D) < M_EPSILON) {
if (N < 0) if (N < 0) {
return false; return false;
else }
else {
continue; continue;
}
} }
t = N / D; t = N / D;
if (D < 0) { // segment seg is entering across this edge if (D < 0) { // segment seg is entering across this edge
if (t > tE) { // new max tE if (t > tE) { // new max tE
tE = t; tE = t;
if (tE > tL) // seg enters after leaving polygon if (tE > tL) { // seg enters after leaving polygon
return false; return false;
}
} }
} }
else { // segment seg is leaving across this edge else { // segment seg is leaving across this edge
if (t < tL) { // new min tL if (t < tL) { // new min tL
tL = t; tL = t;
if (tL < tE) // seg leaves before entering polygon if (tL < tE) { // seg leaves before entering polygon
return false; return false;
}
} }
} }
} }
@@ -773,10 +808,12 @@ inline bool overlapPlaneBox(Vec3r &normal, real d, Vec3r &maxbox)
vmax[q] = -maxbox[q]; vmax[q] = -maxbox[q];
} }
} }
if ((normal * vmin) + d > 0.0f) if ((normal * vmin) + d > 0.0f) {
return false; return false;
if ((normal * vmax) + d >= 0.0f) }
if ((normal * vmax) + d >= 0.0f) {
return true; return true;
}
return false; return false;
} }
@@ -796,8 +833,9 @@ inline void fromCoordAToCoordB(const Vec3r &p, Vec3r &q, const real transform[4]
return; return;
} }
for (unsigned int k = 0; k < 3; k++) for (unsigned int k = 0; k < 3; k++) {
q[k] = hq[k] / hq[3]; q[k] = hq[k] / hq[3];
}
} }
} // end of namespace GeomUtils } // end of namespace GeomUtils

View File

@@ -50,12 +50,14 @@ template<class T> real distPointSegment(const T &P, const T &A, const T &B)
BP = P - B; BP = P - B;
real c1(AB * AP); real c1(AB * AP);
if (c1 <= 0) if (c1 <= 0) {
return AP.norm(); return AP.norm();
}
real c2(AB * AB); real c2(AB * AB);
if (c2 <= c1) if (c2 <= c1) {
return BP.norm(); return BP.norm();
}
real b = c1 / c2; real b = c1 / c2;
T Pb, PPb; T Pb, PPb;

View File

@@ -83,8 +83,9 @@ void firstIntersectionGridVisitor::examineOccluder(Polygon3r *occ)
bool firstIntersectionGridVisitor::stop() bool firstIntersectionGridVisitor::stop()
{ {
if (occluder_) if (occluder_) {
return true; return true;
}
return false; return false;
} }
@@ -139,20 +140,23 @@ void Grid::configure(const Vec3r &orig, const Vec3r &size, unsigned nb)
// We compute the number of cells par edge such as we cover at least the whole box. // We compute the number of cells par edge such as we cover at least the whole box.
unsigned i; unsigned i;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++) {
_cells_nb[i] = (unsigned)floor(tmpSize[i] / edge) + 1; _cells_nb[i] = (unsigned)floor(tmpSize[i] / edge) + 1;
}
_size = tmpSize; _size = tmpSize;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++) {
_cell_size[i] = _size[i] / _cells_nb[i]; _cell_size[i] = _size[i] / _cells_nb[i];
}
} }
void Grid::insertOccluder(Polygon3r *occluder) void Grid::insertOccluder(Polygon3r *occluder)
{ {
const vector<Vec3r> vertices = occluder->getVertices(); const vector<Vec3r> vertices = occluder->getVertices();
if (vertices.size() == 0) if (vertices.size() == 0) {
return; return;
}
// add this occluder to the grid's occluders list // add this occluder to the grid's occluders list
addOccluder(occluder); addOccluder(occluder);
@@ -244,12 +248,15 @@ bool Grid::nextRayCell(Vec3u &current_cell, Vec3u &next_cell)
// coresponding to the intersections with the plans: // coresponding to the intersections with the plans:
// x = _cell_size[0], y = _cell_size[1], z = _cell_size[2] // x = _cell_size[0], y = _cell_size[1], z = _cell_size[2]
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
if (_ray_dir[i] == 0) if (_ray_dir[i] == 0) {
continue; continue;
if (_ray_dir[i] > 0) }
if (_ray_dir[i] > 0) {
t = (_cell_size[i] - _pt[i]) / _ray_dir[i]; t = (_cell_size[i] - _pt[i]) / _ray_dir[i];
else }
else {
t = -_pt[i] / _ray_dir[i]; t = -_pt[i] / _ray_dir[i];
}
if (t < t_min) { if (t < t_min) {
t_min = t; t_min = t;
coord = i; coord = i;
@@ -266,20 +273,23 @@ bool Grid::nextRayCell(Vec3u &current_cell, Vec3u &next_cell)
next_cell[coord]++; next_cell[coord]++;
_pt[coord] -= _cell_size[coord]; _pt[coord] -= _cell_size[coord];
// if we are out of the grid, we must stop // if we are out of the grid, we must stop
if (next_cell[coord] >= _cells_nb[coord]) if (next_cell[coord] >= _cells_nb[coord]) {
return false; return false;
}
} }
else { else {
int tmp = next_cell[coord] - 1; int tmp = next_cell[coord] - 1;
_pt[coord] = _cell_size[coord]; _pt[coord] = _cell_size[coord];
if (tmp < 0) if (tmp < 0) {
return false; return false;
}
next_cell[coord]--; next_cell[coord]--;
} }
_t += t_min; _t += t_min;
if (_t >= _t_end) if (_t >= _t_end) {
return false; return false;
}
return true; return true;
} }
@@ -301,8 +311,9 @@ void Grid::castInfiniteRay(const Vec3r &orig,
{ {
Vec3r end = Vec3r(orig + FLT_MAX * dir / dir.norm()); Vec3r end = Vec3r(orig + FLT_MAX * dir / dir.norm());
bool inter = initInfiniteRay(orig, dir, timestamp); bool inter = initInfiniteRay(orig, dir, timestamp);
if (!inter) if (!inter) {
return; return;
}
allOccludersGridVisitor visitor(occluders); allOccludersGridVisitor visitor(occluders);
castRayInternal(visitor); castRayInternal(visitor);
} }
@@ -371,8 +382,9 @@ bool Grid::initInfiniteRay(const Vec3r &orig, const Vec3r &dir, unsigned timesta
Vec3r newOrig = orig + tmin * _ray_dir; Vec3r newOrig = orig + tmin * _ray_dir;
for (unsigned int i = 0; i < 3; i++) { for (unsigned int i = 0; i < 3; i++) {
_current_cell[i] = (unsigned)floor((newOrig[i] - _orig[i]) / _cell_size[i]); _current_cell[i] = (unsigned)floor((newOrig[i] - _orig[i]) / _cell_size[i]);
if (_current_cell[i] == _cells_nb[i]) if (_current_cell[i] == _cells_nb[i]) {
_current_cell[i] = _cells_nb[i] - 1; _current_cell[i] = _cells_nb[i] - 1;
}
// soc unused - unsigned u = _current_cell[i]; // soc unused - unsigned u = _current_cell[i];
_pt[i] = newOrig[i] - _orig[i] - _current_cell[i] * _cell_size[i]; _pt[i] = newOrig[i] - _orig[i] - _current_cell[i] * _cell_size[i];
} }

View File

@@ -67,8 +67,9 @@ class Cell {
inline void addOccluder(Polygon3r *o) inline void addOccluder(Polygon3r *o)
{ {
if (o) if (o) {
_occluders.push_back(o); _occluders.push_back(o);
}
} }
inline const Vec3r &getOrigin() inline const Vec3r &getOrigin()
@@ -227,12 +228,15 @@ class Grid {
int tmp; int tmp;
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
tmp = (int)((p[i] - _orig[i]) / _cell_size[i]); tmp = (int)((p[i] - _orig[i]) / _cell_size[i]);
if (tmp < 0) if (tmp < 0) {
res[i] = 0; res[i] = 0;
else if ((unsigned int)tmp >= _cells_nb[i]) }
else if ((unsigned int)tmp >= _cells_nb[i]) {
res[i] = _cells_nb[i] - 1; res[i] = _cells_nb[i] - 1;
else }
else {
res[i] = tmp; res[i] = tmp;
}
} }
} }
@@ -263,8 +267,9 @@ class Grid {
*/ */
inline void getCellOrigin(const Vec3u &cell_coord, Vec3r &orig) inline void getCellOrigin(const Vec3u &cell_coord, Vec3r &orig)
{ {
for (unsigned int i = 0; i < 3; i++) for (unsigned int i = 0; i < 3; i++) {
orig[i] = _orig[i] + cell_coord[i] * _cell_size[i]; orig[i] = _orig[i] + cell_coord[i] * _cell_size[i];
}
} }
/*! Retrieves the box corresponding to the cell whose coordinates are passed as argument: /*! Retrieves the box corresponding to the cell whose coordinates are passed as argument:

View File

@@ -87,8 +87,9 @@ class HashGrid : public Grid {
Cell *found_cell = NULL; Cell *found_cell = NULL;
GridHashTable::const_iterator found = _cells.find(p); GridHashTable::const_iterator found = _cells.find(p);
if (found != _cells.end()) if (found != _cells.end()) {
found_cell = (*found).second; found_cell = (*found).second;
}
return found_cell; return found_cell;
} }

View File

@@ -245,12 +245,14 @@ Noise::Noise(long seed)
p[i] = i; p[i] = i;
g1[i] = (float)((BLI_rng_get_int(rng) % (_NOISE_B + _NOISE_B)) - _NOISE_B) / _NOISE_B; g1[i] = (float)((BLI_rng_get_int(rng) % (_NOISE_B + _NOISE_B)) - _NOISE_B) / _NOISE_B;
for (j = 0; j < 2; j++) for (j = 0; j < 2; j++) {
g2[i][j] = (float)((BLI_rng_get_int(rng) % (_NOISE_B + _NOISE_B)) - _NOISE_B) / _NOISE_B; g2[i][j] = (float)((BLI_rng_get_int(rng) % (_NOISE_B + _NOISE_B)) - _NOISE_B) / _NOISE_B;
}
normalize2(g2[i]); normalize2(g2[i]);
for (j = 0; j < 3; j++) for (j = 0; j < 3; j++) {
g3[i][j] = (float)((BLI_rng_get_int(rng) % (_NOISE_B + _NOISE_B)) - _NOISE_B) / _NOISE_B; g3[i][j] = (float)((BLI_rng_get_int(rng) % (_NOISE_B + _NOISE_B)) - _NOISE_B) / _NOISE_B;
}
normalize3(g3[i]); normalize3(g3[i]);
} }
@@ -264,11 +266,13 @@ Noise::Noise(long seed)
p[_NOISE_B + i] = p[i]; p[_NOISE_B + i] = p[i];
g1[_NOISE_B + i] = g1[i]; g1[_NOISE_B + i] = g1[i];
for (j = 0; j < 2; j++) for (j = 0; j < 2; j++) {
g2[_NOISE_B + i][j] = g2[i][j]; g2[_NOISE_B + i][j] = g2[i][j];
}
for (j = 0; j < 3; j++) for (j = 0; j < 3; j++) {
g3[_NOISE_B + i][j] = g3[i][j]; g3[_NOISE_B + i][j] = g3[i][j];
}
} }
BLI_rng_free(rng); BLI_rng_free(rng);

View File

@@ -100,8 +100,9 @@ template<class Point> class Polygon {
inline Point getCenter() inline Point getCenter()
{ {
Point result; Point result;
for (typename vector<Point>::iterator it = _vertices.begin(); it != _vertices.end(); it++) for (typename vector<Point>::iterator it = _vertices.begin(); it != _vertices.end(); it++) {
result += *it; result += *it;
}
result /= _vertices.size(); result /= _vertices.size();
return result; return result;
} }
@@ -138,18 +139,21 @@ template<class Point> class Polygon {
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
inline void computeBBox() inline void computeBBox()
{ {
if (_vertices.empty()) if (_vertices.empty()) {
return; return;
}
_max = _vertices[0]; _max = _vertices[0];
_min = _vertices[0]; _min = _vertices[0];
for (typename vector<Point>::iterator it = _vertices.begin(); it != _vertices.end(); it++) { for (typename vector<Point>::iterator it = _vertices.begin(); it != _vertices.end(); it++) {
for (unsigned int i = 0; i < Point::dim(); i++) { for (unsigned int i = 0; i < Point::dim(); i++) {
if ((*it)[i] > _max[i]) if ((*it)[i] > _max[i]) {
_max[i] = (*it)[i]; _max[i] = (*it)[i];
if ((*it)[i] < _min[i]) }
if ((*it)[i] < _min[i]) {
_min[i] = (*it)[i]; _min[i] = (*it)[i];
}
} }
} }
} }

View File

@@ -59,8 +59,9 @@ template<class T, unsigned N> class Vec {
// constructors // constructors
inline Vec() inline Vec()
{ {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] = 0; this->_coord[i] = 0;
}
} }
~Vec() ~Vec()
@@ -70,20 +71,23 @@ template<class T, unsigned N> class Vec {
template<class U> explicit inline Vec(const U tab[N]) template<class U> explicit inline Vec(const U tab[N])
{ {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] = (T)tab[i]; this->_coord[i] = (T)tab[i];
}
} }
template<class U> explicit inline Vec(const std::vector<U> &tab) template<class U> explicit inline Vec(const std::vector<U> &tab)
{ {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] = (T)tab[i]; this->_coord[i] = (T)tab[i];
}
} }
template<class U> explicit inline Vec(const Vec<U, N> &v) template<class U> explicit inline Vec(const Vec<U, N> &v)
{ {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] = (T)v[i]; this->_coord[i] = (T)v[i];
}
} }
// accessors // accessors
@@ -116,8 +120,9 @@ template<class T, unsigned N> class Vec {
inline Vec<T, N> &normalize() inline Vec<T, N> &normalize()
{ {
value_type n = norm(); value_type n = norm();
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] /= n; this->_coord[i] /= n;
}
return *this; return *this;
} }
@@ -125,8 +130,9 @@ template<class T, unsigned N> class Vec {
{ {
value_type n = norm(); value_type n = norm();
if (n) { if (n) {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] /= n; this->_coord[i] /= n;
}
} }
return *this; return *this;
} }
@@ -156,8 +162,9 @@ template<class T, unsigned N> class Vec {
inline Vec<T, N> operator/(const typename Vec<T, N>::value_type r) const inline Vec<T, N> operator/(const typename Vec<T, N>::value_type r) const
{ {
Vec<T, N> res(*this); Vec<T, N> res(*this);
if (r) if (r) {
res /= r; res /= r;
}
return res; return res;
} }
@@ -165,46 +172,52 @@ template<class T, unsigned N> class Vec {
inline value_type operator*(const Vec<T, N> &v) const inline value_type operator*(const Vec<T, N> &v) const
{ {
value_type sum = 0; value_type sum = 0;
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
sum += (*this)[i] * v[i]; sum += (*this)[i] * v[i];
}
return sum; return sum;
} }
template<class U> inline Vec<T, N> &operator=(const Vec<U, N> &v) template<class U> inline Vec<T, N> &operator=(const Vec<U, N> &v)
{ {
if (this != &v) { if (this != &v) {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] = (T)v[i]; this->_coord[i] = (T)v[i];
}
} }
return *this; return *this;
} }
template<class U> inline Vec<T, N> &operator+=(const Vec<U, N> &v) template<class U> inline Vec<T, N> &operator+=(const Vec<U, N> &v)
{ {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] += (T)v[i]; this->_coord[i] += (T)v[i];
}
return *this; return *this;
} }
template<class U> inline Vec<T, N> &operator-=(const Vec<U, N> &v) template<class U> inline Vec<T, N> &operator-=(const Vec<U, N> &v)
{ {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] -= (T)v[i]; this->_coord[i] -= (T)v[i];
}
return *this; return *this;
} }
template<class U> inline Vec<T, N> &operator*=(const U r) template<class U> inline Vec<T, N> &operator*=(const U r)
{ {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] *= r; this->_coord[i] *= r;
}
return *this; return *this;
} }
template<class U> inline Vec<T, N> &operator/=(const U r) template<class U> inline Vec<T, N> &operator/=(const U r)
{ {
if (r) { if (r) {
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
this->_coord[i] /= r; this->_coord[i] /= r;
}
} }
return *this; return *this;
} }
@@ -212,8 +225,9 @@ template<class T, unsigned N> class Vec {
inline bool operator==(const Vec<T, N> &v) const inline bool operator==(const Vec<T, N> &v) const
{ {
for (unsigned int i = 0; i < N; i++) { for (unsigned int i = 0; i < N; i++) {
if (this->_coord[i] != v[i]) if (this->_coord[i] != v[i]) {
return false; return false;
}
} }
return true; return true;
} }
@@ -221,8 +235,9 @@ template<class T, unsigned N> class Vec {
inline bool operator!=(const Vec<T, N> &v) const inline bool operator!=(const Vec<T, N> &v) const
{ {
for (unsigned int i = 0; i < N; i++) { for (unsigned int i = 0; i < N; i++) {
if (this->_coord[i] != v[i]) if (this->_coord[i] != v[i]) {
return true; return true;
}
} }
return false; return false;
} }
@@ -230,12 +245,15 @@ template<class T, unsigned N> class Vec {
inline bool operator<(const Vec<T, N> &v) const inline bool operator<(const Vec<T, N> &v) const
{ {
for (unsigned int i = 0; i < N; i++) { for (unsigned int i = 0; i < N; i++) {
if (this->_coord[i] < v[i]) if (this->_coord[i] < v[i]) {
return true; return true;
if (this->_coord[i] > v[i]) }
if (this->_coord[i] > v[i]) {
return false; return false;
if (this->_coord[i] == v[i]) }
if (this->_coord[i] == v[i]) {
continue; continue;
}
} }
return false; return false;
} }
@@ -243,12 +261,15 @@ template<class T, unsigned N> class Vec {
inline bool operator>(const Vec<T, N> &v) const inline bool operator>(const Vec<T, N> &v) const
{ {
for (unsigned int i = 0; i < N; i++) { for (unsigned int i = 0; i < N; i++) {
if (this->_coord[i] > v[i]) if (this->_coord[i] > v[i]) {
return true; return true;
if (this->_coord[i] < v[i]) }
if (this->_coord[i] < v[i]) {
return false; return false;
if (this->_coord[i] == v[i]) }
if (this->_coord[i] == v[i]) {
continue; continue;
}
} }
return false; return false;
} }
@@ -351,8 +372,9 @@ template<class T> class Vec2 : public Vec<T, 2> {
inline Vec2<T> operator/(const value_type r) const inline Vec2<T> operator/(const value_type r) const
{ {
Vec2<T> res(*this); Vec2<T> res(*this);
if (r) if (r) {
res /= r; res /= r;
}
return res; return res;
} }
@@ -360,8 +382,9 @@ template<class T> class Vec2 : public Vec<T, 2> {
inline value_type operator*(const Vec2<T> &v) const inline value_type operator*(const Vec2<T> &v) const
{ {
value_type sum = 0; value_type sum = 0;
for (unsigned int i = 0; i < 2; i++) for (unsigned int i = 0; i < 2; i++) {
sum += (*this)[i] * v[i]; sum += (*this)[i] * v[i];
}
return sum; return sum;
} }
}; };
@@ -578,8 +601,9 @@ template<class T> class Vec3 : public Vec<T, 3> {
inline Vec3<T> operator/(const value_type r) const inline Vec3<T> operator/(const value_type r) const
{ {
Vec3<T> res(*this); Vec3<T> res(*this);
if (r) if (r) {
res /= r; res /= r;
}
return res; return res;
} }
@@ -587,8 +611,9 @@ template<class T> class Vec3 : public Vec<T, 3> {
inline value_type operator*(const Vec3<T> &v) const inline value_type operator*(const Vec3<T> &v) const
{ {
value_type sum = 0; value_type sum = 0;
for (unsigned int i = 0; i < 3; i++) for (unsigned int i = 0; i < 3; i++) {
sum += (*this)[i] * v[i]; sum += (*this)[i] * v[i];
}
return sum; return sum;
} }
@@ -629,8 +654,9 @@ template<class T, unsigned M, unsigned N> class Matrix {
inline Matrix() inline Matrix()
{ {
for (unsigned int i = 0; i < _SIZE; i++) for (unsigned int i = 0; i < _SIZE; i++) {
this->_coord[i] = 0; this->_coord[i] = 0;
}
} }
~Matrix() ~Matrix()
@@ -641,21 +667,24 @@ template<class T, unsigned M, unsigned N> class Matrix {
template<class U> explicit inline Matrix(const U tab[_SIZE]) template<class U> explicit inline Matrix(const U tab[_SIZE])
{ {
for (unsigned int i = 0; i < _SIZE; i++) for (unsigned int i = 0; i < _SIZE; i++) {
this->_coord[i] = tab[i]; this->_coord[i] = tab[i];
}
} }
template<class U> explicit inline Matrix(const std::vector<U> &tab) template<class U> explicit inline Matrix(const std::vector<U> &tab)
{ {
for (unsigned int i = 0; i < _SIZE; i++) for (unsigned int i = 0; i < _SIZE; i++) {
this->_coord[i] = tab[i]; this->_coord[i] = tab[i];
}
} }
template<class U> inline Matrix(const Matrix<U, M, N> &m) template<class U> inline Matrix(const Matrix<U, M, N> &m)
{ {
for (unsigned int i = 0; i < M; i++) { for (unsigned int i = 0; i < M; i++) {
for (unsigned int j = 0; j < N; j++) for (unsigned int j = 0; j < N; j++) {
this->_coord[i * N + j] = (T)m(i, j); this->_coord[i * N + j] = (T)m(i, j);
}
} }
} }
@@ -683,8 +712,9 @@ template<class T, unsigned M, unsigned N> class Matrix {
{ {
Matrix<T, N, M> res; Matrix<T, N, M> res;
for (unsigned int i = 0; i < M; i++) { for (unsigned int i = 0; i < M; i++) {
for (unsigned int j = 0; j < N; j++) for (unsigned int j = 0; j < N; j++) {
res(j, i) = this->_coord[i * N + j]; res(j, i) = this->_coord[i * N + j];
}
} }
*this = res; *this = res;
return *this; return *this;
@@ -694,8 +724,9 @@ template<class T, unsigned M, unsigned N> class Matrix {
{ {
if (this != &m) { if (this != &m) {
for (unsigned int i = 0; i < M; i++) { for (unsigned int i = 0; i < M; i++) {
for (unsigned int j = 0; j < N; j++) for (unsigned int j = 0; j < N; j++) {
this->_coord[i * N + j] = (T)m(i, j); this->_coord[i * N + j] = (T)m(i, j);
}
} }
} }
return *this; return *this;
@@ -704,8 +735,9 @@ template<class T, unsigned M, unsigned N> class Matrix {
template<class U> inline Matrix<T, M, N> &operator+=(const Matrix<U, M, N> &m) template<class U> inline Matrix<T, M, N> &operator+=(const Matrix<U, M, N> &m)
{ {
for (unsigned int i = 0; i < M; i++) { for (unsigned int i = 0; i < M; i++) {
for (unsigned int j = 0; j < N; j++) for (unsigned int j = 0; j < N; j++) {
this->_coord[i * N + j] += (T)m(i, j); this->_coord[i * N + j] += (T)m(i, j);
}
} }
return *this; return *this;
} }
@@ -713,8 +745,9 @@ template<class T, unsigned M, unsigned N> class Matrix {
template<class U> inline Matrix<T, M, N> &operator-=(const Matrix<U, M, N> &m) template<class U> inline Matrix<T, M, N> &operator-=(const Matrix<U, M, N> &m)
{ {
for (unsigned int i = 0; i < M; i++) { for (unsigned int i = 0; i < M; i++) {
for (unsigned int j = 0; j < N; j++) for (unsigned int j = 0; j < N; j++) {
this->_coord[i * N + j] -= (T)m(i, j); this->_coord[i * N + j] -= (T)m(i, j);
}
} }
return *this; return *this;
} }
@@ -722,8 +755,9 @@ template<class T, unsigned M, unsigned N> class Matrix {
template<class U> inline Matrix<T, M, N> &operator*=(const U lambda) template<class U> inline Matrix<T, M, N> &operator*=(const U lambda)
{ {
for (unsigned int i = 0; i < M; i++) { for (unsigned int i = 0; i < M; i++) {
for (unsigned int j = 0; j < N; j++) for (unsigned int j = 0; j < N; j++) {
this->_coord[i * N + j] *= lambda; this->_coord[i * N + j] *= lambda;
}
} }
return *this; return *this;
} }
@@ -732,8 +766,9 @@ template<class T, unsigned M, unsigned N> class Matrix {
{ {
if (lambda) { if (lambda) {
for (unsigned int i = 0; i < M; i++) { for (unsigned int i = 0; i < M; i++) {
for (unsigned int j = 0; j < N; j++) for (unsigned int j = 0; j < N; j++) {
this->_coord[i * N + j] /= lambda; this->_coord[i * N + j] /= lambda;
}
} }
} }
return *this; return *this;
@@ -782,8 +817,9 @@ template<class T, unsigned N> class SquareMatrix : public Matrix<T, N, N> {
static inline SquareMatrix<T, N> identity() static inline SquareMatrix<T, N> identity()
{ {
SquareMatrix<T, N> res; SquareMatrix<T, N> res;
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
res(i, i) = 1; res(i, i) = 1;
}
return res; return res;
} }
}; };
@@ -861,8 +897,9 @@ template<class T, unsigned N> inline std::ostream &operator<<(std::ostream &s, c
{ {
unsigned int i; unsigned int i;
s << "["; s << "[";
for (i = 0; i < N - 1; i++) for (i = 0; i < N - 1; i++) {
s << v[i] << ", "; s << v[i] << ", ";
}
s << v[i] << "]"; s << v[i] << "]";
return s; return s;
} }
@@ -925,8 +962,9 @@ inline Matrix<T, M, P> operator*(const Matrix<T, M, N> &m1, const Matrix<T, N, P
for (j = 0; j < P; j++) { for (j = 0; j < P; j++) {
for (k = 0; k < N; k++) { for (k = 0; k < N; k++) {
scale = m2(k, j); scale = m2(k, j);
for (i = 0; i < N; i++) for (i = 0; i < N; i++) {
res(i, j) += m1(i, k) * scale; res(i, j) += m1(i, k) * scale;
}
} }
} }
return res; return res;
@@ -940,8 +978,9 @@ inline Vec<T, M> operator*(const Matrix<T, M, N> &m, const Vec<T, N> &v)
for (unsigned int j = 0; j < M; j++) { for (unsigned int j = 0; j < M; j++) {
scale = v[j]; scale = v[j];
for (unsigned int i = 0; i < N; i++) for (unsigned int i = 0; i < N; i++) {
res[i] += m(i, j) * scale; res[i] += m(i, j) * scale;
}
} }
return res; return res;
} }
@@ -953,8 +992,9 @@ inline std::ostream &operator<<(std::ostream &s, const Matrix<T, M, N> &m)
unsigned int i, j; unsigned int i, j;
for (i = 0; i < M; i++) { for (i = 0; i < M; i++) {
s << "["; s << "[";
for (j = 0; j < N - 1; j++) for (j = 0; j < N - 1; j++) {
s << m(i, j) << ", "; s << m(i, j) << ", ";
}
s << m(i, j) << "]" << std::endl; s << m(i, j) << "]" << std::endl;
} }
return s; return s;

View File

@@ -63,8 +63,9 @@ GaussianFilter::~GaussianFilter()
int GaussianFilter::computeMaskSize(float sigma) int GaussianFilter::computeMaskSize(float sigma)
{ {
int maskSize = (int)floor(4 * sigma) + 1; int maskSize = (int)floor(4 * sigma) + 1;
if (0 == (maskSize % 2)) if (0 == (maskSize % 2)) {
++maskSize; ++maskSize;
}
return maskSize; return maskSize;
} }

View File

@@ -134,11 +134,13 @@ template<class Map> float GaussianFilter::getSmoothedPixel(Map *map, int x, int
// Current pixel is x,y // Current pixel is x,y
// Sum surrounding pixels L value: // Sum surrounding pixels L value:
for (int i = -_bound; i <= _bound; ++i) { for (int i = -_bound; i <= _bound; ++i) {
if ((y + i < 0) || (y + i >= h)) if ((y + i < 0) || (y + i >= h)) {
continue; continue;
}
for (int j = -_bound; j <= _bound; ++j) { for (int j = -_bound; j <= _bound; ++j) {
if ((x + j < 0) || (x + j >= w)) if ((x + j < 0) || (x + j >= w)) {
continue; continue;
}
float tmpL = map->pixel(x + j, y + i); float tmpL = map->pixel(x + j, y + i);
float m = _mask[abs(i) * _storedMaskSize + abs(j)]; float m = _mask[abs(i) * _storedMaskSize + abs(j)];

View File

@@ -238,8 +238,9 @@ class RGBImage : public FrsImage {
virtual ~RGBImage() virtual ~RGBImage()
{ {
if (_rgb) if (_rgb) {
delete[] _rgb; delete[] _rgb;
}
} }
inline float getR(unsigned x, unsigned y) const inline float getR(unsigned x, unsigned y) const
@@ -376,8 +377,9 @@ class GrayImage : public FrsImage {
virtual ~GrayImage() virtual ~GrayImage()
{ {
if (_lvl) if (_lvl) {
delete[] _lvl; delete[] _lvl;
}
} }
inline void setPixel(unsigned x, unsigned y, float v) inline void setPixel(unsigned x, unsigned y, float v)

View File

@@ -71,10 +71,12 @@ float ImagePyramid::pixel(int x, int y, int level)
unsigned int i = 1 << level; unsigned int i = 1 << level;
unsigned int sx = x >> level; unsigned int sx = x >> level;
unsigned int sy = y >> level; unsigned int sy = y >> level;
if (sx >= img->width()) if (sx >= img->width()) {
sx = img->width() - 1; sx = img->width() - 1;
if (sy >= img->height()) }
if (sy >= img->height()) {
sy = img->height() - 1; sy = img->height() - 1;
}
// bilinear interpolation // bilinear interpolation
float A = i * (sx + 1) - x; float A = i * (sx + 1) - x;
@@ -85,8 +87,9 @@ float ImagePyramid::pixel(int x, int y, int level)
float P1(0), P2(0); float P1(0), P2(0);
P1 = A * img->pixel(sx, sy); P1 = A * img->pixel(sx, sy);
if (sx < img->width() - 1) { if (sx < img->width() - 1) {
if (x % i != 0) if (x % i != 0) {
P1 += B * img->pixel(sx + 1, sy); P1 += B * img->pixel(sx + 1, sy);
}
} }
else { else {
P1 += B * img->pixel(sx, sy); P1 += B * img->pixel(sx, sy);
@@ -95,8 +98,9 @@ float ImagePyramid::pixel(int x, int y, int level)
if (y % i != 0) { if (y % i != 0) {
P2 = A * img->pixel(sx, sy + 1); P2 = A * img->pixel(sx, sy + 1);
if (sx < img->width() - 1) { if (sx < img->width() - 1) {
if (x % i != 0) if (x % i != 0) {
P2 += B * img->pixel(sx + 1, sy + 1); P2 += B * img->pixel(sx + 1, sy + 1);
}
} }
else { else {
P2 += B * img->pixel(sx, sy + 1); P2 += B * img->pixel(sx, sy + 1);

View File

@@ -29,11 +29,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int BBox_Init(PyObject *module) int BBox_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&BBox_Type) < 0) if (PyType_Ready(&BBox_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&BBox_Type); Py_INCREF(&BBox_Type);
PyModule_AddObject(module, "BBox", (PyObject *)&BBox_Type); PyModule_AddObject(module, "BBox", (PyObject *)&BBox_Type);
@@ -53,8 +55,9 @@ static int BBox_init(BPy_BBox *self, PyObject *args, PyObject *kwds)
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->bb = new BBox<Vec3r>(); self->bb = new BBox<Vec3r>();
return 0; return 0;
} }

View File

@@ -32,11 +32,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int BinaryPredicate0D_Init(PyObject *module) int BinaryPredicate0D_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&BinaryPredicate0D_Type) < 0) if (PyType_Ready(&BinaryPredicate0D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&BinaryPredicate0D_Type); Py_INCREF(&BinaryPredicate0D_Type);
PyModule_AddObject(module, "BinaryPredicate0D", (PyObject *)&BinaryPredicate0D_Type); PyModule_AddObject(module, "BinaryPredicate0D", (PyObject *)&BinaryPredicate0D_Type);
@@ -72,8 +74,9 @@ static int BinaryPredicate0D___init__(BPy_BinaryPredicate0D *self, PyObject *arg
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->bp0D = new BinaryPredicate0D(); self->bp0D = new BinaryPredicate0D();
self->bp0D->py_bp0D = (PyObject *)self; self->bp0D->py_bp0D = (PyObject *)self;
return 0; return 0;
@@ -81,8 +84,9 @@ static int BinaryPredicate0D___init__(BPy_BinaryPredicate0D *self, PyObject *arg
static void BinaryPredicate0D___dealloc__(BPy_BinaryPredicate0D *self) static void BinaryPredicate0D___dealloc__(BPy_BinaryPredicate0D *self)
{ {
if (self->bp0D) if (self->bp0D) {
delete self->bp0D; delete self->bp0D;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }

View File

@@ -38,36 +38,43 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int BinaryPredicate1D_Init(PyObject *module) int BinaryPredicate1D_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&BinaryPredicate1D_Type) < 0) if (PyType_Ready(&BinaryPredicate1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&BinaryPredicate1D_Type); Py_INCREF(&BinaryPredicate1D_Type);
PyModule_AddObject(module, "BinaryPredicate1D", (PyObject *)&BinaryPredicate1D_Type); PyModule_AddObject(module, "BinaryPredicate1D", (PyObject *)&BinaryPredicate1D_Type);
if (PyType_Ready(&FalseBP1D_Type) < 0) if (PyType_Ready(&FalseBP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&FalseBP1D_Type); Py_INCREF(&FalseBP1D_Type);
PyModule_AddObject(module, "FalseBP1D", (PyObject *)&FalseBP1D_Type); PyModule_AddObject(module, "FalseBP1D", (PyObject *)&FalseBP1D_Type);
if (PyType_Ready(&Length2DBP1D_Type) < 0) if (PyType_Ready(&Length2DBP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Length2DBP1D_Type); Py_INCREF(&Length2DBP1D_Type);
PyModule_AddObject(module, "Length2DBP1D", (PyObject *)&Length2DBP1D_Type); PyModule_AddObject(module, "Length2DBP1D", (PyObject *)&Length2DBP1D_Type);
if (PyType_Ready(&SameShapeIdBP1D_Type) < 0) if (PyType_Ready(&SameShapeIdBP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&SameShapeIdBP1D_Type); Py_INCREF(&SameShapeIdBP1D_Type);
PyModule_AddObject(module, "SameShapeIdBP1D", (PyObject *)&SameShapeIdBP1D_Type); PyModule_AddObject(module, "SameShapeIdBP1D", (PyObject *)&SameShapeIdBP1D_Type);
if (PyType_Ready(&TrueBP1D_Type) < 0) if (PyType_Ready(&TrueBP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&TrueBP1D_Type); Py_INCREF(&TrueBP1D_Type);
PyModule_AddObject(module, "TrueBP1D", (PyObject *)&TrueBP1D_Type); PyModule_AddObject(module, "TrueBP1D", (PyObject *)&TrueBP1D_Type);
if (PyType_Ready(&ViewMapGradientNormBP1D_Type) < 0) if (PyType_Ready(&ViewMapGradientNormBP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ViewMapGradientNormBP1D_Type); Py_INCREF(&ViewMapGradientNormBP1D_Type);
PyModule_AddObject(module, "ViewMapGradientNormBP1D", (PyObject *)&ViewMapGradientNormBP1D_Type); PyModule_AddObject(module, "ViewMapGradientNormBP1D", (PyObject *)&ViewMapGradientNormBP1D_Type);
@@ -103,8 +110,9 @@ static int BinaryPredicate1D___init__(BPy_BinaryPredicate1D *self, PyObject *arg
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->bp1D = new BinaryPredicate1D(); self->bp1D = new BinaryPredicate1D();
self->bp1D->py_bp1D = (PyObject *)self; self->bp1D->py_bp1D = (PyObject *)self;
return 0; return 0;
@@ -112,8 +120,9 @@ static int BinaryPredicate1D___init__(BPy_BinaryPredicate1D *self, PyObject *arg
static void BinaryPredicate1D___dealloc__(BPy_BinaryPredicate1D *self) static void BinaryPredicate1D___dealloc__(BPy_BinaryPredicate1D *self)
{ {
if (self->bp1D) if (self->bp1D) {
delete self->bp1D; delete self->bp1D;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }

View File

@@ -116,8 +116,9 @@ static PyObject *ContextFunctions_load_map(PyObject * /*self*/, PyObject *args,
float sigma = 1.0; float sigma = 1.0;
if (!PyArg_ParseTupleAndKeywords( if (!PyArg_ParseTupleAndKeywords(
args, kwds, "ss|If", (char **)kwlist, &fileName, &mapName, &nbLevels, &sigma)) args, kwds, "ss|If", (char **)kwlist, &fileName, &mapName, &nbLevels, &sigma)) {
return NULL; return NULL;
}
ContextFunctions::LoadMapCF(fileName, mapName, nbLevels, sigma); ContextFunctions::LoadMapCF(fileName, mapName, nbLevels, sigma);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -150,8 +151,10 @@ static PyObject *ContextFunctions_read_map_pixel(PyObject * /*self*/,
int level; int level;
unsigned x, y; unsigned x, y;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "siII", (char **)kwlist, &mapName, &level, &x, &y)) if (!PyArg_ParseTupleAndKeywords(
args, kwds, "siII", (char **)kwlist, &mapName, &level, &x, &y)) {
return NULL; return NULL;
}
return PyFloat_FromDouble(ContextFunctions::ReadMapPixelCF(mapName, level, x, y)); return PyFloat_FromDouble(ContextFunctions::ReadMapPixelCF(mapName, level, x, y));
} }
@@ -180,8 +183,9 @@ static PyObject *ContextFunctions_read_complete_view_map_pixel(PyObject * /*self
int level; int level;
unsigned x, y; unsigned x, y;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "iII", (char **)kwlist, &level, &x, &y)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "iII", (char **)kwlist, &level, &x, &y)) {
return NULL; return NULL;
}
return PyFloat_FromDouble(ContextFunctions::ReadCompleteViewMapPixelCF(level, x, y)); return PyFloat_FromDouble(ContextFunctions::ReadCompleteViewMapPixelCF(level, x, y));
} }
@@ -214,8 +218,9 @@ static PyObject *ContextFunctions_read_directional_view_map_pixel(PyObject * /*s
unsigned x, y; unsigned x, y;
if (!PyArg_ParseTupleAndKeywords( if (!PyArg_ParseTupleAndKeywords(
args, kwds, "iiII", (char **)kwlist, &orientation, &level, &x, &y)) args, kwds, "iiII", (char **)kwlist, &orientation, &level, &x, &y)) {
return NULL; return NULL;
}
return PyFloat_FromDouble( return PyFloat_FromDouble(
ContextFunctions::ReadDirectionalViewMapPixelCF(orientation, level, x, y)); ContextFunctions::ReadDirectionalViewMapPixelCF(orientation, level, x, y));
} }
@@ -231,8 +236,9 @@ static char ContextFunctions_get_selected_fedge___doc__[] =
static PyObject *ContextFunctions_get_selected_fedge(PyObject * /*self*/) static PyObject *ContextFunctions_get_selected_fedge(PyObject * /*self*/)
{ {
FEdge *fe = ContextFunctions::GetSelectedFEdgeCF(); FEdge *fe = ContextFunctions::GetSelectedFEdgeCF();
if (fe) if (fe) {
return Any_BPy_FEdge_from_FEdge(*fe); return Any_BPy_FEdge_from_FEdge(*fe);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -298,12 +304,14 @@ int ContextFunctions_Init(PyObject *module)
{ {
PyObject *m; PyObject *m;
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
m = PyModule_Create(&module_definition); m = PyModule_Create(&module_definition);
if (m == NULL) if (m == NULL) {
return -1; return -1;
}
Py_INCREF(m); Py_INCREF(m);
PyModule_AddObject(module, "ContextFunctions", m); PyModule_AddObject(module, "ContextFunctions", m);

View File

@@ -527,47 +527,60 @@ Nature::EdgeNature EdgeNature_from_BPy_Nature(PyObject *obj)
bool Vec2f_ptr_from_PyObject(PyObject *obj, Vec2f &vec) bool Vec2f_ptr_from_PyObject(PyObject *obj, Vec2f &vec)
{ {
if (Vec2f_ptr_from_Vector(obj, vec)) if (Vec2f_ptr_from_Vector(obj, vec)) {
return true; return true;
if (Vec2f_ptr_from_PyList(obj, vec)) }
if (Vec2f_ptr_from_PyList(obj, vec)) {
return true; return true;
if (Vec2f_ptr_from_PyTuple(obj, vec)) }
if (Vec2f_ptr_from_PyTuple(obj, vec)) {
return true; return true;
}
return false; return false;
} }
bool Vec3f_ptr_from_PyObject(PyObject *obj, Vec3f &vec) bool Vec3f_ptr_from_PyObject(PyObject *obj, Vec3f &vec)
{ {
if (Vec3f_ptr_from_Vector(obj, vec)) if (Vec3f_ptr_from_Vector(obj, vec)) {
return true; return true;
if (Vec3f_ptr_from_Color(obj, vec)) }
if (Vec3f_ptr_from_Color(obj, vec)) {
return true; return true;
if (Vec3f_ptr_from_PyList(obj, vec)) }
if (Vec3f_ptr_from_PyList(obj, vec)) {
return true; return true;
if (Vec3f_ptr_from_PyTuple(obj, vec)) }
if (Vec3f_ptr_from_PyTuple(obj, vec)) {
return true; return true;
}
return false; return false;
} }
bool Vec3r_ptr_from_PyObject(PyObject *obj, Vec3r &vec) bool Vec3r_ptr_from_PyObject(PyObject *obj, Vec3r &vec)
{ {
if (Vec3r_ptr_from_Vector(obj, vec)) if (Vec3r_ptr_from_Vector(obj, vec)) {
return true; return true;
if (Vec3r_ptr_from_Color(obj, vec)) }
if (Vec3r_ptr_from_Color(obj, vec)) {
return true; return true;
if (Vec3r_ptr_from_PyList(obj, vec)) }
if (Vec3r_ptr_from_PyList(obj, vec)) {
return true; return true;
if (Vec3r_ptr_from_PyTuple(obj, vec)) }
if (Vec3r_ptr_from_PyTuple(obj, vec)) {
return true; return true;
}
return false; return false;
} }
bool Vec2f_ptr_from_Vector(PyObject *obj, Vec2f &vec) bool Vec2f_ptr_from_Vector(PyObject *obj, Vec2f &vec)
{ {
if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 2) if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 2) {
return false; return false;
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) }
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) {
return false; return false;
}
vec[0] = ((VectorObject *)obj)->vec[0]; vec[0] = ((VectorObject *)obj)->vec[0];
vec[1] = ((VectorObject *)obj)->vec[1]; vec[1] = ((VectorObject *)obj)->vec[1];
return true; return true;
@@ -575,10 +588,12 @@ bool Vec2f_ptr_from_Vector(PyObject *obj, Vec2f &vec)
bool Vec3f_ptr_from_Vector(PyObject *obj, Vec3f &vec) bool Vec3f_ptr_from_Vector(PyObject *obj, Vec3f &vec)
{ {
if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3) if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3) {
return false; return false;
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) }
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) {
return false; return false;
}
vec[0] = ((VectorObject *)obj)->vec[0]; vec[0] = ((VectorObject *)obj)->vec[0];
vec[1] = ((VectorObject *)obj)->vec[1]; vec[1] = ((VectorObject *)obj)->vec[1];
vec[2] = ((VectorObject *)obj)->vec[2]; vec[2] = ((VectorObject *)obj)->vec[2];
@@ -587,10 +602,12 @@ bool Vec3f_ptr_from_Vector(PyObject *obj, Vec3f &vec)
bool Vec3r_ptr_from_Vector(PyObject *obj, Vec3r &vec) bool Vec3r_ptr_from_Vector(PyObject *obj, Vec3r &vec)
{ {
if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3) if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3) {
return false; return false;
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) }
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) {
return false; return false;
}
vec[0] = ((VectorObject *)obj)->vec[0]; vec[0] = ((VectorObject *)obj)->vec[0];
vec[1] = ((VectorObject *)obj)->vec[1]; vec[1] = ((VectorObject *)obj)->vec[1];
vec[2] = ((VectorObject *)obj)->vec[2]; vec[2] = ((VectorObject *)obj)->vec[2];
@@ -599,10 +616,12 @@ bool Vec3r_ptr_from_Vector(PyObject *obj, Vec3r &vec)
bool Vec3f_ptr_from_Color(PyObject *obj, Vec3f &vec) bool Vec3f_ptr_from_Color(PyObject *obj, Vec3f &vec)
{ {
if (!ColorObject_Check(obj)) if (!ColorObject_Check(obj)) {
return false; return false;
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) }
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) {
return false; return false;
}
vec[0] = ((ColorObject *)obj)->col[0]; vec[0] = ((ColorObject *)obj)->col[0];
vec[1] = ((ColorObject *)obj)->col[1]; vec[1] = ((ColorObject *)obj)->col[1];
vec[2] = ((ColorObject *)obj)->col[2]; vec[2] = ((ColorObject *)obj)->col[2];
@@ -611,10 +630,12 @@ bool Vec3f_ptr_from_Color(PyObject *obj, Vec3f &vec)
bool Vec3r_ptr_from_Color(PyObject *obj, Vec3r &vec) bool Vec3r_ptr_from_Color(PyObject *obj, Vec3r &vec)
{ {
if (!ColorObject_Check(obj)) if (!ColorObject_Check(obj)) {
return false; return false;
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) }
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) {
return false; return false;
}
vec[0] = ((ColorObject *)obj)->col[0]; vec[0] = ((ColorObject *)obj)->col[0];
vec[1] = ((ColorObject *)obj)->col[1]; vec[1] = ((ColorObject *)obj)->col[1];
vec[2] = ((ColorObject *)obj)->col[2]; vec[2] = ((ColorObject *)obj)->col[2];
@@ -637,10 +658,12 @@ bool Vec2f_ptr_from_PyList(PyObject *obj, Vec2f &vec)
{ {
float v[2]; float v[2];
if (!PyList_Check(obj) || PyList_GET_SIZE(obj) != 2) if (!PyList_Check(obj) || PyList_GET_SIZE(obj) != 2) {
return false; return false;
if (!float_array_from_PyList(obj, v, 2)) }
if (!float_array_from_PyList(obj, v, 2)) {
return false; return false;
}
vec[0] = v[0]; vec[0] = v[0];
vec[1] = v[1]; vec[1] = v[1];
return true; return true;
@@ -650,10 +673,12 @@ bool Vec3f_ptr_from_PyList(PyObject *obj, Vec3f &vec)
{ {
float v[3]; float v[3];
if (!PyList_Check(obj) || PyList_GET_SIZE(obj) != 3) if (!PyList_Check(obj) || PyList_GET_SIZE(obj) != 3) {
return false; return false;
if (!float_array_from_PyList(obj, v, 3)) }
if (!float_array_from_PyList(obj, v, 3)) {
return false; return false;
}
vec[0] = v[0]; vec[0] = v[0];
vec[1] = v[1]; vec[1] = v[1];
vec[2] = v[2]; vec[2] = v[2];
@@ -664,10 +689,12 @@ bool Vec3r_ptr_from_PyList(PyObject *obj, Vec3r &vec)
{ {
float v[3]; float v[3];
if (!PyList_Check(obj) || PyList_GET_SIZE(obj) != 3) if (!PyList_Check(obj) || PyList_GET_SIZE(obj) != 3) {
return false; return false;
if (!float_array_from_PyList(obj, v, 3)) }
if (!float_array_from_PyList(obj, v, 3)) {
return false; return false;
}
vec[0] = v[0]; vec[0] = v[0];
vec[1] = v[1]; vec[1] = v[1];
vec[2] = v[2]; vec[2] = v[2];
@@ -690,10 +717,12 @@ bool Vec2f_ptr_from_PyTuple(PyObject *obj, Vec2f &vec)
{ {
float v[2]; float v[2];
if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 2) if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 2) {
return false; return false;
if (!float_array_from_PyTuple(obj, v, 2)) }
if (!float_array_from_PyTuple(obj, v, 2)) {
return false; return false;
}
vec[0] = v[0]; vec[0] = v[0];
vec[1] = v[1]; vec[1] = v[1];
return true; return true;
@@ -703,10 +732,12 @@ bool Vec3f_ptr_from_PyTuple(PyObject *obj, Vec3f &vec)
{ {
float v[3]; float v[3];
if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 3) if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 3) {
return false; return false;
if (!float_array_from_PyTuple(obj, v, 3)) }
if (!float_array_from_PyTuple(obj, v, 3)) {
return false; return false;
}
vec[0] = v[0]; vec[0] = v[0];
vec[1] = v[1]; vec[1] = v[1];
vec[2] = v[2]; vec[2] = v[2];
@@ -717,10 +748,12 @@ bool Vec3r_ptr_from_PyTuple(PyObject *obj, Vec3r &vec)
{ {
float v[3]; float v[3];
if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 3) if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 3) {
return false; return false;
if (!float_array_from_PyTuple(obj, v, 3)) }
if (!float_array_from_PyTuple(obj, v, 3)) {
return false; return false;
}
vec[0] = v[0]; vec[0] = v[0];
vec[1] = v[1]; vec[1] = v[1];
vec[2] = v[2]; vec[2] = v[2];
@@ -732,17 +765,21 @@ bool Vec3r_ptr_from_PyTuple(PyObject *obj, Vec3r &vec)
bool float_array_from_PyObject(PyObject *obj, float *v, int n) bool float_array_from_PyObject(PyObject *obj, float *v, int n)
{ {
if (VectorObject_Check(obj) && ((VectorObject *)obj)->size == n) { if (VectorObject_Check(obj) && ((VectorObject *)obj)->size == n) {
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) {
return 0; return 0;
for (int i = 0; i < n; i++) }
for (int i = 0; i < n; i++) {
v[i] = ((VectorObject *)obj)->vec[i]; v[i] = ((VectorObject *)obj)->vec[i];
}
return 1; return 1;
} }
else if (ColorObject_Check(obj) && n == 3) { else if (ColorObject_Check(obj) && n == 3) {
if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1) {
return 0; return 0;
for (int i = 0; i < n; i++) }
for (int i = 0; i < n; i++) {
v[i] = ((ColorObject *)obj)->col[i]; v[i] = ((ColorObject *)obj)->col[i];
}
return 1; return 1;
} }
else if (PyList_Check(obj) && PyList_GET_SIZE(obj) == n) { else if (PyList_Check(obj) && PyList_GET_SIZE(obj) == n) {

View File

@@ -83,42 +83,60 @@ static PyObject *Freestyle_getCurrentScene(PyObject * /*self*/)
static int ramp_blend_type(const char *type) static int ramp_blend_type(const char *type)
{ {
if (STREQ(type, "MIX")) if (STREQ(type, "MIX")) {
return MA_RAMP_BLEND; return MA_RAMP_BLEND;
if (STREQ(type, "ADD")) }
if (STREQ(type, "ADD")) {
return MA_RAMP_ADD; return MA_RAMP_ADD;
if (STREQ(type, "MULTIPLY")) }
if (STREQ(type, "MULTIPLY")) {
return MA_RAMP_MULT; return MA_RAMP_MULT;
if (STREQ(type, "SUBTRACT")) }
if (STREQ(type, "SUBTRACT")) {
return MA_RAMP_SUB; return MA_RAMP_SUB;
if (STREQ(type, "SCREEN")) }
if (STREQ(type, "SCREEN")) {
return MA_RAMP_SCREEN; return MA_RAMP_SCREEN;
if (STREQ(type, "DIVIDE")) }
if (STREQ(type, "DIVIDE")) {
return MA_RAMP_DIV; return MA_RAMP_DIV;
if (STREQ(type, "DIFFERENCE")) }
if (STREQ(type, "DIFFERENCE")) {
return MA_RAMP_DIFF; return MA_RAMP_DIFF;
if (STREQ(type, "DARKEN")) }
if (STREQ(type, "DARKEN")) {
return MA_RAMP_DARK; return MA_RAMP_DARK;
if (STREQ(type, "LIGHTEN")) }
if (STREQ(type, "LIGHTEN")) {
return MA_RAMP_LIGHT; return MA_RAMP_LIGHT;
if (STREQ(type, "OVERLAY")) }
if (STREQ(type, "OVERLAY")) {
return MA_RAMP_OVERLAY; return MA_RAMP_OVERLAY;
if (STREQ(type, "DODGE")) }
if (STREQ(type, "DODGE")) {
return MA_RAMP_DODGE; return MA_RAMP_DODGE;
if (STREQ(type, "BURN")) }
if (STREQ(type, "BURN")) {
return MA_RAMP_BURN; return MA_RAMP_BURN;
if (STREQ(type, "HUE")) }
if (STREQ(type, "HUE")) {
return MA_RAMP_HUE; return MA_RAMP_HUE;
if (STREQ(type, "SATURATION")) }
if (STREQ(type, "SATURATION")) {
return MA_RAMP_SAT; return MA_RAMP_SAT;
if (STREQ(type, "VALUE")) }
if (STREQ(type, "VALUE")) {
return MA_RAMP_VAL; return MA_RAMP_VAL;
if (STREQ(type, "COLOR")) }
if (STREQ(type, "COLOR")) {
return MA_RAMP_COLOR; return MA_RAMP_COLOR;
if (STREQ(type, "SOFT_LIGHT")) }
if (STREQ(type, "SOFT_LIGHT")) {
return MA_RAMP_SOFT; return MA_RAMP_SOFT;
if (STREQ(type, "LINEAR_LIGHT")) }
if (STREQ(type, "LINEAR_LIGHT")) {
return MA_RAMP_LINEAR; return MA_RAMP_LINEAR;
}
return -1; return -1;
} }
@@ -147,8 +165,9 @@ static PyObject *Freestyle_blendRamp(PyObject * /*self*/, PyObject *args)
int type; int type;
float a[3], fac, b[3]; float a[3], fac, b[3];
if (!PyArg_ParseTuple(args, "sOfO", &s, &obj1, &fac, &obj2)) if (!PyArg_ParseTuple(args, "sOfO", &s, &obj1, &fac, &obj2)) {
return NULL; return NULL;
}
type = ramp_blend_type(s); type = ramp_blend_type(s);
if (type < 0) { if (type < 0) {
PyErr_SetString(PyExc_TypeError, "argument 1 is an unknown ramp blend type"); PyErr_SetString(PyExc_TypeError, "argument 1 is an unknown ramp blend type");
@@ -194,8 +213,9 @@ static PyObject *Freestyle_evaluateColorRamp(PyObject * /*self*/, PyObject *args
ColorBand *coba; ColorBand *coba;
float in, out[4]; float in, out[4];
if (!(PyArg_ParseTuple(args, "O!f", &pyrna_struct_Type, &py_srna, &in))) if (!(PyArg_ParseTuple(args, "O!f", &pyrna_struct_Type, &py_srna, &in))) {
return NULL; return NULL;
}
if (!RNA_struct_is_a(py_srna->ptr.type, &RNA_ColorRamp)) { if (!RNA_struct_is_a(py_srna->ptr.type, &RNA_ColorRamp)) {
PyErr_SetString(PyExc_TypeError, "1st argument is not a ColorRamp object"); PyErr_SetString(PyExc_TypeError, "1st argument is not a ColorRamp object");
return NULL; return NULL;
@@ -232,8 +252,9 @@ static PyObject *Freestyle_evaluateCurveMappingF(PyObject * /*self*/, PyObject *
int cur; int cur;
float value; float value;
if (!(PyArg_ParseTuple(args, "O!if", &pyrna_struct_Type, &py_srna, &cur, &value))) if (!(PyArg_ParseTuple(args, "O!if", &pyrna_struct_Type, &py_srna, &cur, &value))) {
return NULL; return NULL;
}
if (!RNA_struct_is_a(py_srna->ptr.type, &RNA_CurveMapping)) { if (!RNA_struct_is_a(py_srna->ptr.type, &RNA_CurveMapping)) {
PyErr_SetString(PyExc_TypeError, "1st argument is not a CurveMapping object"); PyErr_SetString(PyExc_TypeError, "1st argument is not a CurveMapping object");
return NULL; return NULL;
@@ -514,8 +535,9 @@ PyObject *Freestyle_Init(void)
// initialize modules // initialize modules
module = PyModule_Create(&module_definition); module = PyModule_Create(&module_definition);
if (!module) if (!module) {
return NULL; return NULL;
}
PyDict_SetItemString(PySys_GetObject("modules"), module_definition.m_name, module); PyDict_SetItemString(PySys_GetObject("modules"), module_definition.m_name, module);
// update 'sys.path' for Freestyle Python API modules // update 'sys.path' for Freestyle Python API modules

View File

@@ -33,11 +33,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int FrsMaterial_Init(PyObject *module) int FrsMaterial_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&FrsMaterial_Type) < 0) if (PyType_Ready(&FrsMaterial_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&FrsMaterial_Type); Py_INCREF(&FrsMaterial_Type);
PyModule_AddObject(module, "Material", (PyObject *)&FrsMaterial_Type); PyModule_AddObject(module, "Material", (PyObject *)&FrsMaterial_Type);
@@ -154,8 +156,9 @@ static PyObject *FrsMaterial_repr(BPy_FrsMaterial *self)
static int FrsMaterial_mathutils_check(BaseMathObject *bmo) static int FrsMaterial_mathutils_check(BaseMathObject *bmo)
{ {
if (!BPy_FrsMaterial_Check(bmo->cb_user)) if (!BPy_FrsMaterial_Check(bmo->cb_user)) {
return -1; return -1;
}
return 0; return 0;
} }

View File

@@ -34,11 +34,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int FrsNoise_Init(PyObject *module) int FrsNoise_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&FrsNoise_Type) < 0) if (PyType_Ready(&FrsNoise_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&FrsNoise_Type); Py_INCREF(&FrsNoise_Type);
PyModule_AddObject(module, "Noise", (PyObject *)&FrsNoise_Type); PyModule_AddObject(module, "Noise", (PyObject *)&FrsNoise_Type);
@@ -64,8 +66,9 @@ static int FrsNoise_init(BPy_FrsNoise *self, PyObject *args, PyObject *kwds)
static const char *kwlist[] = {"seed", NULL}; static const char *kwlist[] = {"seed", NULL};
long seed = -1; long seed = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|l", (char **)kwlist, &seed)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "|l", (char **)kwlist, &seed)) {
return -1; return -1;
}
self->n = new Noise(seed); self->n = new Noise(seed);
self->pn = new PseudoNoise(); self->pn = new PseudoNoise();
return 0; return 0;
@@ -120,8 +123,9 @@ static PyObject *FrsNoise_turbulence_smooth(BPy_FrsNoise *self, PyObject *args,
double x; // note: this has to be a double (not float) double x; // note: this has to be a double (not float)
unsigned nbOctaves = 8; unsigned nbOctaves = 8;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "d|I", (char **)kwlist, &x, &nbOctaves)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "d|I", (char **)kwlist, &x, &nbOctaves)) {
return NULL; return NULL;
}
return PyFloat_FromDouble(self->pn->turbulenceSmooth(x, nbOctaves)); return PyFloat_FromDouble(self->pn->turbulenceSmooth(x, nbOctaves));
} }
@@ -131,8 +135,9 @@ static PyObject *FrsNoise_turbulence1(BPy_FrsNoise *self, PyObject *args, PyObje
float f1, f2, f3; float f1, f2, f3;
unsigned int i = 4; unsigned int i = 4;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "fff|I", (char **)kwlist, &f1, &f2, &f3, &i)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "fff|I", (char **)kwlist, &f1, &f2, &f3, &i)) {
return NULL; return NULL;
}
return PyFloat_FromDouble(self->n->turbulence1(f1, f2, f3, i)); return PyFloat_FromDouble(self->n->turbulence1(f1, f2, f3, i));
} }
@@ -160,8 +165,9 @@ static PyObject *FrsNoise_turbulence2(BPy_FrsNoise *self, PyObject *args, PyObje
unsigned int i = 4; unsigned int i = 4;
Vec2f vec; Vec2f vec;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "Off|I", (char **)kwlist, &obj1, &f2, &f3, &i)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "Off|I", (char **)kwlist, &obj1, &f2, &f3, &i)) {
return NULL; return NULL;
}
if (!Vec2f_ptr_from_PyObject(obj1, vec)) { if (!Vec2f_ptr_from_PyObject(obj1, vec)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"argument 1 must be a 2D vector (either a list of 2 elements or Vector)"); "argument 1 must be a 2D vector (either a list of 2 elements or Vector)");
@@ -195,8 +201,9 @@ static PyObject *FrsNoise_turbulence3(BPy_FrsNoise *self, PyObject *args, PyObje
unsigned int i = 4; unsigned int i = 4;
Vec3f vec; Vec3f vec;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "Off|I", (char **)kwlist, &obj1, &f2, &f3, &i)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "Off|I", (char **)kwlist, &obj1, &f2, &f3, &i)) {
return NULL; return NULL;
}
if (!Vec3f_ptr_from_PyObject(obj1, vec)) { if (!Vec3f_ptr_from_PyObject(obj1, vec)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"argument 1 must be a 3D vector (either a list of 3 elements or Vector)"); "argument 1 must be a 3D vector (either a list of 3 elements or Vector)");
@@ -221,8 +228,9 @@ static PyObject *FrsNoise_smoothNoise1(BPy_FrsNoise *self, PyObject *args, PyObj
static const char *kwlist[] = {"v", NULL}; static const char *kwlist[] = {"v", NULL};
float f; float f;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "f", (char **)kwlist, &f)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "f", (char **)kwlist, &f)) {
return NULL; return NULL;
}
return PyFloat_FromDouble(self->n->smoothNoise1(f)); return PyFloat_FromDouble(self->n->smoothNoise1(f));
} }
@@ -242,8 +250,9 @@ static PyObject *FrsNoise_smoothNoise2(BPy_FrsNoise *self, PyObject *args, PyObj
PyObject *obj; PyObject *obj;
Vec2f vec; Vec2f vec;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj)) {
return NULL; return NULL;
}
if (!Vec2f_ptr_from_PyObject(obj, vec)) { if (!Vec2f_ptr_from_PyObject(obj, vec)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"argument 1 must be a 2D vector (either a list of 2 elements or Vector)"); "argument 1 must be a 2D vector (either a list of 2 elements or Vector)");
@@ -269,8 +278,9 @@ static PyObject *FrsNoise_smoothNoise3(BPy_FrsNoise *self, PyObject *args, PyObj
PyObject *obj; PyObject *obj;
Vec3f vec; Vec3f vec;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj)) {
return NULL; return NULL;
}
if (!Vec3f_ptr_from_PyObject(obj, vec)) { if (!Vec3f_ptr_from_PyObject(obj, vec)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"argument 1 must be a 3D vector (either a list of 3 elements or Vector)"); "argument 1 must be a 3D vector (either a list of 3 elements or Vector)");

View File

@@ -31,11 +31,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int Id_Init(PyObject *module) int Id_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&Id_Type) < 0) if (PyType_Ready(&Id_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Id_Type); Py_INCREF(&Id_Type);
PyModule_AddObject(module, "Id", (PyObject *)&Id_Type); PyModule_AddObject(module, "Id", (PyObject *)&Id_Type);

View File

@@ -211,11 +211,13 @@ int IntegrationType_Init(PyObject *module)
{ {
PyObject *m, *d, *f; PyObject *m, *d, *f;
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&IntegrationType_Type) < 0) if (PyType_Ready(&IntegrationType_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&IntegrationType_Type); Py_INCREF(&IntegrationType_Type);
PyModule_AddObject(module, "IntegrationType", (PyObject *)&IntegrationType_Type); PyModule_AddObject(module, "IntegrationType", (PyObject *)&IntegrationType_Type);
@@ -226,8 +228,9 @@ int IntegrationType_Init(PyObject *module)
PyDict_SetItemString(IntegrationType_Type.tp_dict, "LAST", BPy_IntegrationType_LAST); PyDict_SetItemString(IntegrationType_Type.tp_dict, "LAST", BPy_IntegrationType_LAST);
m = PyModule_Create(&module_definition); m = PyModule_Create(&module_definition);
if (m == NULL) if (m == NULL) {
return -1; return -1;
}
Py_INCREF(m); Py_INCREF(m);
PyModule_AddObject(module, "Integrator", m); PyModule_AddObject(module, "Integrator", m);

View File

@@ -39,41 +39,49 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int Interface0D_Init(PyObject *module) int Interface0D_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&Interface0D_Type) < 0) if (PyType_Ready(&Interface0D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Interface0D_Type); Py_INCREF(&Interface0D_Type);
PyModule_AddObject(module, "Interface0D", (PyObject *)&Interface0D_Type); PyModule_AddObject(module, "Interface0D", (PyObject *)&Interface0D_Type);
if (PyType_Ready(&CurvePoint_Type) < 0) if (PyType_Ready(&CurvePoint_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&CurvePoint_Type); Py_INCREF(&CurvePoint_Type);
PyModule_AddObject(module, "CurvePoint", (PyObject *)&CurvePoint_Type); PyModule_AddObject(module, "CurvePoint", (PyObject *)&CurvePoint_Type);
if (PyType_Ready(&SVertex_Type) < 0) if (PyType_Ready(&SVertex_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&SVertex_Type); Py_INCREF(&SVertex_Type);
PyModule_AddObject(module, "SVertex", (PyObject *)&SVertex_Type); PyModule_AddObject(module, "SVertex", (PyObject *)&SVertex_Type);
if (PyType_Ready(&ViewVertex_Type) < 0) if (PyType_Ready(&ViewVertex_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ViewVertex_Type); Py_INCREF(&ViewVertex_Type);
PyModule_AddObject(module, "ViewVertex", (PyObject *)&ViewVertex_Type); PyModule_AddObject(module, "ViewVertex", (PyObject *)&ViewVertex_Type);
if (PyType_Ready(&StrokeVertex_Type) < 0) if (PyType_Ready(&StrokeVertex_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&StrokeVertex_Type); Py_INCREF(&StrokeVertex_Type);
PyModule_AddObject(module, "StrokeVertex", (PyObject *)&StrokeVertex_Type); PyModule_AddObject(module, "StrokeVertex", (PyObject *)&StrokeVertex_Type);
if (PyType_Ready(&NonTVertex_Type) < 0) if (PyType_Ready(&NonTVertex_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&NonTVertex_Type); Py_INCREF(&NonTVertex_Type);
PyModule_AddObject(module, "NonTVertex", (PyObject *)&NonTVertex_Type); PyModule_AddObject(module, "NonTVertex", (PyObject *)&NonTVertex_Type);
if (PyType_Ready(&TVertex_Type) < 0) if (PyType_Ready(&TVertex_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&TVertex_Type); Py_INCREF(&TVertex_Type);
PyModule_AddObject(module, "TVertex", (PyObject *)&TVertex_Type); PyModule_AddObject(module, "TVertex", (PyObject *)&TVertex_Type);
@@ -96,8 +104,9 @@ static int Interface0D_init(BPy_Interface0D *self, PyObject *args, PyObject *kwd
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->if0D = new Interface0D(); self->if0D = new Interface0D();
self->borrowed = false; self->borrowed = false;
return 0; return 0;
@@ -105,8 +114,9 @@ static int Interface0D_init(BPy_Interface0D *self, PyObject *args, PyObject *kwd
static void Interface0D_dealloc(BPy_Interface0D *self) static void Interface0D_dealloc(BPy_Interface0D *self)
{ {
if (self->if0D && !self->borrowed) if (self->if0D && !self->borrowed) {
delete self->if0D; delete self->if0D;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }
@@ -132,13 +142,17 @@ static PyObject *Interface0D_get_fedge(BPy_Interface0D *self, PyObject *args, Py
static const char *kwlist[] = {"inter", NULL}; static const char *kwlist[] = {"inter", NULL};
PyObject *py_if0D; PyObject *py_if0D;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &Interface0D_Type, &py_if0D)) if (!PyArg_ParseTupleAndKeywords(
args, kwds, "O!", (char **)kwlist, &Interface0D_Type, &py_if0D)) {
return NULL; return NULL;
}
FEdge *fe = self->if0D->getFEdge(*(((BPy_Interface0D *)py_if0D)->if0D)); FEdge *fe = self->if0D->getFEdge(*(((BPy_Interface0D *)py_if0D)->if0D));
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
if (fe) }
if (fe) {
return Any_BPy_FEdge_from_FEdge(*fe); return Any_BPy_FEdge_from_FEdge(*fe);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -170,8 +184,9 @@ PyDoc_STRVAR(Interface0D_point_3d_doc,
static PyObject *Interface0D_point_3d_get(BPy_Interface0D *self, void *UNUSED(closure)) static PyObject *Interface0D_point_3d_get(BPy_Interface0D *self, void *UNUSED(closure))
{ {
Vec3f p(self->if0D->getPoint3D()); Vec3f p(self->if0D->getPoint3D());
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return Vector_from_Vec3f(p); return Vector_from_Vec3f(p);
} }
@@ -183,8 +198,9 @@ PyDoc_STRVAR(Interface0D_projected_x_doc,
static PyObject *Interface0D_projected_x_get(BPy_Interface0D *self, void *UNUSED(closure)) static PyObject *Interface0D_projected_x_get(BPy_Interface0D *self, void *UNUSED(closure))
{ {
real x = self->if0D->getProjectedX(); real x = self->if0D->getProjectedX();
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return PyFloat_FromDouble(x); return PyFloat_FromDouble(x);
} }
@@ -196,8 +212,9 @@ PyDoc_STRVAR(Interface0D_projected_y_doc,
static PyObject *Interface0D_projected_y_get(BPy_Interface0D *self, void *UNUSED(closure)) static PyObject *Interface0D_projected_y_get(BPy_Interface0D *self, void *UNUSED(closure))
{ {
real y = self->if0D->getProjectedY(); real y = self->if0D->getProjectedY();
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return PyFloat_FromDouble(y); return PyFloat_FromDouble(y);
} }
@@ -209,8 +226,9 @@ PyDoc_STRVAR(Interface0D_projected_z_doc,
static PyObject *Interface0D_projected_z_get(BPy_Interface0D *self, void *UNUSED(closure)) static PyObject *Interface0D_projected_z_get(BPy_Interface0D *self, void *UNUSED(closure))
{ {
real z = self->if0D->getProjectedZ(); real z = self->if0D->getProjectedZ();
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return PyFloat_FromDouble(z); return PyFloat_FromDouble(z);
} }
@@ -222,8 +240,9 @@ PyDoc_STRVAR(Interface0D_point_2d_doc,
static PyObject *Interface0D_point_2d_get(BPy_Interface0D *self, void *UNUSED(closure)) static PyObject *Interface0D_point_2d_get(BPy_Interface0D *self, void *UNUSED(closure))
{ {
Vec2f p(self->if0D->getPoint2D()); Vec2f p(self->if0D->getPoint2D());
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return Vector_from_Vec2f(p); return Vector_from_Vec2f(p);
} }
@@ -235,8 +254,9 @@ PyDoc_STRVAR(Interface0D_id_doc,
static PyObject *Interface0D_id_get(BPy_Interface0D *self, void *UNUSED(closure)) static PyObject *Interface0D_id_get(BPy_Interface0D *self, void *UNUSED(closure))
{ {
Id id(self->if0D->getId()); Id id(self->if0D->getId());
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return BPy_Id_from_Id(id); // return a copy return BPy_Id_from_Id(id); // return a copy
} }
@@ -248,8 +268,9 @@ PyDoc_STRVAR(Interface0D_nature_doc,
static PyObject *Interface0D_nature_get(BPy_Interface0D *self, void *UNUSED(closure)) static PyObject *Interface0D_nature_get(BPy_Interface0D *self, void *UNUSED(closure))
{ {
Nature::VertexNature nature = self->if0D->getNature(); Nature::VertexNature nature = self->if0D->getNature();
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return BPy_Nature_from_Nature(nature); return BPy_Nature_from_Nature(nature);
} }

View File

@@ -40,41 +40,49 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int Interface1D_Init(PyObject *module) int Interface1D_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&Interface1D_Type) < 0) if (PyType_Ready(&Interface1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Interface1D_Type); Py_INCREF(&Interface1D_Type);
PyModule_AddObject(module, "Interface1D", (PyObject *)&Interface1D_Type); PyModule_AddObject(module, "Interface1D", (PyObject *)&Interface1D_Type);
if (PyType_Ready(&FrsCurve_Type) < 0) if (PyType_Ready(&FrsCurve_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&FrsCurve_Type); Py_INCREF(&FrsCurve_Type);
PyModule_AddObject(module, "Curve", (PyObject *)&FrsCurve_Type); PyModule_AddObject(module, "Curve", (PyObject *)&FrsCurve_Type);
if (PyType_Ready(&Chain_Type) < 0) if (PyType_Ready(&Chain_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Chain_Type); Py_INCREF(&Chain_Type);
PyModule_AddObject(module, "Chain", (PyObject *)&Chain_Type); PyModule_AddObject(module, "Chain", (PyObject *)&Chain_Type);
if (PyType_Ready(&FEdge_Type) < 0) if (PyType_Ready(&FEdge_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&FEdge_Type); Py_INCREF(&FEdge_Type);
PyModule_AddObject(module, "FEdge", (PyObject *)&FEdge_Type); PyModule_AddObject(module, "FEdge", (PyObject *)&FEdge_Type);
if (PyType_Ready(&FEdgeSharp_Type) < 0) if (PyType_Ready(&FEdgeSharp_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&FEdgeSharp_Type); Py_INCREF(&FEdgeSharp_Type);
PyModule_AddObject(module, "FEdgeSharp", (PyObject *)&FEdgeSharp_Type); PyModule_AddObject(module, "FEdgeSharp", (PyObject *)&FEdgeSharp_Type);
if (PyType_Ready(&FEdgeSmooth_Type) < 0) if (PyType_Ready(&FEdgeSmooth_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&FEdgeSmooth_Type); Py_INCREF(&FEdgeSmooth_Type);
PyModule_AddObject(module, "FEdgeSmooth", (PyObject *)&FEdgeSmooth_Type); PyModule_AddObject(module, "FEdgeSmooth", (PyObject *)&FEdgeSmooth_Type);
if (PyType_Ready(&Stroke_Type) < 0) if (PyType_Ready(&Stroke_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Stroke_Type); Py_INCREF(&Stroke_Type);
PyModule_AddObject(module, "Stroke", (PyObject *)&Stroke_Type); PyModule_AddObject(module, "Stroke", (PyObject *)&Stroke_Type);
@@ -82,8 +90,9 @@ int Interface1D_Init(PyObject *module)
PyDict_SetItemString(Stroke_Type.tp_dict, "HUMID_MEDIUM", BPy_MediumType_HUMID_MEDIUM); PyDict_SetItemString(Stroke_Type.tp_dict, "HUMID_MEDIUM", BPy_MediumType_HUMID_MEDIUM);
PyDict_SetItemString(Stroke_Type.tp_dict, "OPAQUE_MEDIUM", BPy_MediumType_OPAQUE_MEDIUM); PyDict_SetItemString(Stroke_Type.tp_dict, "OPAQUE_MEDIUM", BPy_MediumType_OPAQUE_MEDIUM);
if (PyType_Ready(&ViewEdge_Type) < 0) if (PyType_Ready(&ViewEdge_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ViewEdge_Type); Py_INCREF(&ViewEdge_Type);
PyModule_AddObject(module, "ViewEdge", (PyObject *)&ViewEdge_Type); PyModule_AddObject(module, "ViewEdge", (PyObject *)&ViewEdge_Type);
@@ -106,8 +115,9 @@ static int Interface1D_init(BPy_Interface1D *self, PyObject *args, PyObject *kwd
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->if1D = new Interface1D(); self->if1D = new Interface1D();
self->borrowed = false; self->borrowed = false;
return 0; return 0;
@@ -115,8 +125,9 @@ static int Interface1D_init(BPy_Interface1D *self, PyObject *args, PyObject *kwd
static void Interface1D_dealloc(BPy_Interface1D *self) static void Interface1D_dealloc(BPy_Interface1D *self)
{ {
if (self->if1D && !self->borrowed) if (self->if1D && !self->borrowed) {
delete self->if1D; delete self->if1D;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }
@@ -175,8 +186,9 @@ static PyObject *Interface1D_points_begin(BPy_Interface1D *self, PyObject *args,
static const char *kwlist[] = {"t", NULL}; static const char *kwlist[] = {"t", NULL};
float f = 0.0f; float f = 0.0f;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|f", (char **)kwlist, &f)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "|f", (char **)kwlist, &f)) {
return NULL; return NULL;
}
Interface0DIterator if0D_it(self->if1D->pointsBegin(f)); Interface0DIterator if0D_it(self->if1D->pointsBegin(f));
return BPy_Interface0DIterator_from_Interface0DIterator(if0D_it, false); return BPy_Interface0DIterator_from_Interface0DIterator(if0D_it, false);
} }
@@ -200,8 +212,9 @@ static PyObject *Interface1D_points_end(BPy_Interface1D *self, PyObject *args, P
static const char *kwlist[] = {"t", NULL}; static const char *kwlist[] = {"t", NULL};
float f = 0.0f; float f = 0.0f;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|f", (char **)kwlist, &f)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "|f", (char **)kwlist, &f)) {
return NULL; return NULL;
}
Interface0DIterator if0D_it(self->if1D->pointsEnd(f)); Interface0DIterator if0D_it(self->if1D->pointsEnd(f));
return BPy_Interface0DIterator_from_Interface0DIterator(if0D_it, true); return BPy_Interface0DIterator_from_Interface0DIterator(if0D_it, true);
} }
@@ -246,8 +259,9 @@ PyDoc_STRVAR(Interface1D_id_doc,
static PyObject *Interface1D_id_get(BPy_Interface1D *self, void *UNUSED(closure)) static PyObject *Interface1D_id_get(BPy_Interface1D *self, void *UNUSED(closure))
{ {
Id id(self->if1D->getId()); Id id(self->if1D->getId());
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return BPy_Id_from_Id(id); // return a copy return BPy_Id_from_Id(id); // return a copy
} }
@@ -259,8 +273,9 @@ PyDoc_STRVAR(Interface1D_nature_doc,
static PyObject *Interface1D_nature_get(BPy_Interface1D *self, void *UNUSED(closure)) static PyObject *Interface1D_nature_get(BPy_Interface1D *self, void *UNUSED(closure))
{ {
Nature::VertexNature nature = self->if1D->getNature(); Nature::VertexNature nature = self->if1D->getNature();
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return BPy_Nature_from_Nature(nature); return BPy_Nature_from_Nature(nature);
} }
@@ -272,8 +287,9 @@ PyDoc_STRVAR(Interface1D_length_2d_doc,
static PyObject *Interface1D_length_2d_get(BPy_Interface1D *self, void *UNUSED(closure)) static PyObject *Interface1D_length_2d_get(BPy_Interface1D *self, void *UNUSED(closure))
{ {
real length = self->if1D->getLength2D(); real length = self->if1D->getLength2D();
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return PyFloat_FromDouble((double)length); return PyFloat_FromDouble((double)length);
} }

View File

@@ -41,62 +41,74 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int Iterator_Init(PyObject *module) int Iterator_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&Iterator_Type) < 0) if (PyType_Ready(&Iterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Iterator_Type); Py_INCREF(&Iterator_Type);
PyModule_AddObject(module, "Iterator", (PyObject *)&Iterator_Type); PyModule_AddObject(module, "Iterator", (PyObject *)&Iterator_Type);
if (PyType_Ready(&AdjacencyIterator_Type) < 0) if (PyType_Ready(&AdjacencyIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&AdjacencyIterator_Type); Py_INCREF(&AdjacencyIterator_Type);
PyModule_AddObject(module, "AdjacencyIterator", (PyObject *)&AdjacencyIterator_Type); PyModule_AddObject(module, "AdjacencyIterator", (PyObject *)&AdjacencyIterator_Type);
if (PyType_Ready(&Interface0DIterator_Type) < 0) if (PyType_Ready(&Interface0DIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Interface0DIterator_Type); Py_INCREF(&Interface0DIterator_Type);
PyModule_AddObject(module, "Interface0DIterator", (PyObject *)&Interface0DIterator_Type); PyModule_AddObject(module, "Interface0DIterator", (PyObject *)&Interface0DIterator_Type);
if (PyType_Ready(&CurvePointIterator_Type) < 0) if (PyType_Ready(&CurvePointIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&CurvePointIterator_Type); Py_INCREF(&CurvePointIterator_Type);
PyModule_AddObject(module, "CurvePointIterator", (PyObject *)&CurvePointIterator_Type); PyModule_AddObject(module, "CurvePointIterator", (PyObject *)&CurvePointIterator_Type);
if (PyType_Ready(&StrokeVertexIterator_Type) < 0) if (PyType_Ready(&StrokeVertexIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&StrokeVertexIterator_Type); Py_INCREF(&StrokeVertexIterator_Type);
PyModule_AddObject(module, "StrokeVertexIterator", (PyObject *)&StrokeVertexIterator_Type); PyModule_AddObject(module, "StrokeVertexIterator", (PyObject *)&StrokeVertexIterator_Type);
if (PyType_Ready(&SVertexIterator_Type) < 0) if (PyType_Ready(&SVertexIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&SVertexIterator_Type); Py_INCREF(&SVertexIterator_Type);
PyModule_AddObject(module, "SVertexIterator", (PyObject *)&SVertexIterator_Type); PyModule_AddObject(module, "SVertexIterator", (PyObject *)&SVertexIterator_Type);
if (PyType_Ready(&orientedViewEdgeIterator_Type) < 0) if (PyType_Ready(&orientedViewEdgeIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&orientedViewEdgeIterator_Type); Py_INCREF(&orientedViewEdgeIterator_Type);
PyModule_AddObject( PyModule_AddObject(
module, "orientedViewEdgeIterator", (PyObject *)&orientedViewEdgeIterator_Type); module, "orientedViewEdgeIterator", (PyObject *)&orientedViewEdgeIterator_Type);
if (PyType_Ready(&ViewEdgeIterator_Type) < 0) if (PyType_Ready(&ViewEdgeIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ViewEdgeIterator_Type); Py_INCREF(&ViewEdgeIterator_Type);
PyModule_AddObject(module, "ViewEdgeIterator", (PyObject *)&ViewEdgeIterator_Type); PyModule_AddObject(module, "ViewEdgeIterator", (PyObject *)&ViewEdgeIterator_Type);
if (PyType_Ready(&ChainingIterator_Type) < 0) if (PyType_Ready(&ChainingIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ChainingIterator_Type); Py_INCREF(&ChainingIterator_Type);
PyModule_AddObject(module, "ChainingIterator", (PyObject *)&ChainingIterator_Type); PyModule_AddObject(module, "ChainingIterator", (PyObject *)&ChainingIterator_Type);
if (PyType_Ready(&ChainPredicateIterator_Type) < 0) if (PyType_Ready(&ChainPredicateIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ChainPredicateIterator_Type); Py_INCREF(&ChainPredicateIterator_Type);
PyModule_AddObject(module, "ChainPredicateIterator", (PyObject *)&ChainPredicateIterator_Type); PyModule_AddObject(module, "ChainPredicateIterator", (PyObject *)&ChainPredicateIterator_Type);
if (PyType_Ready(&ChainSilhouetteIterator_Type) < 0) if (PyType_Ready(&ChainSilhouetteIterator_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ChainSilhouetteIterator_Type); Py_INCREF(&ChainSilhouetteIterator_Type);
PyModule_AddObject(module, "ChainSilhouetteIterator", (PyObject *)&ChainSilhouetteIterator_Type); PyModule_AddObject(module, "ChainSilhouetteIterator", (PyObject *)&ChainSilhouetteIterator_Type);
@@ -116,16 +128,18 @@ static int Iterator_init(BPy_Iterator *self, PyObject *args, PyObject *kwds)
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->it = new Iterator(); self->it = new Iterator();
return 0; return 0;
} }
static void Iterator_dealloc(BPy_Iterator *self) static void Iterator_dealloc(BPy_Iterator *self)
{ {
if (self->it) if (self->it) {
delete self->it; delete self->it;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }

View File

@@ -96,11 +96,13 @@ PyLongObject _BPy_MediumType_OPAQUE_MEDIUM = {
int MediumType_Init(PyObject *module) int MediumType_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&MediumType_Type) < 0) if (PyType_Ready(&MediumType_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&MediumType_Type); Py_INCREF(&MediumType_Type);
PyModule_AddObject(module, "MediumType", (PyObject *)&MediumType_Type); PyModule_AddObject(module, "MediumType", (PyObject *)&MediumType_Type);

View File

@@ -186,11 +186,13 @@ static PyLongObject _Nature_EDGE_MARK = {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int Nature_Init(PyObject *module) int Nature_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&Nature_Type) < 0) if (PyType_Ready(&Nature_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Nature_Type); Py_INCREF(&Nature_Type);
PyModule_AddObject(module, "Nature", (PyObject *)&Nature_Type); PyModule_AddObject(module, "Nature", (PyObject *)&Nature_Type);
@@ -248,12 +250,14 @@ static PyObject *BPy_Nature_bitwise(PyObject *a, int op, PyObject *b)
PyErr_BadArgument(); PyErr_BadArgument();
return NULL; return NULL;
} }
if (v == 0) if (v == 0) {
result = PyObject_NewVar(BPy_Nature, &Nature_Type, 0); result = PyObject_NewVar(BPy_Nature, &Nature_Type, 0);
}
else { else {
result = PyObject_NewVar(BPy_Nature, &Nature_Type, 1); result = PyObject_NewVar(BPy_Nature, &Nature_Type, 1);
if (result) if (result) {
result->i.ob_digit[0] = v; result->i.ob_digit[0] = v;
}
} }
return (PyObject *)result; return (PyObject *)result;
} }

View File

@@ -41,11 +41,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int Operators_Init(PyObject *module) int Operators_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&Operators_Type) < 0) if (PyType_Ready(&Operators_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&Operators_Type); Py_INCREF(&Operators_Type);
PyModule_AddObject(module, "Operators", (PyObject *)&Operators_Type); PyModule_AddObject(module, "Operators", (PyObject *)&Operators_Type);
@@ -80,16 +82,18 @@ static PyObject *Operators_select(BPy_Operators * /*self*/, PyObject *args, PyOb
PyObject *obj = 0; PyObject *obj = 0;
if (!PyArg_ParseTupleAndKeywords( if (!PyArg_ParseTupleAndKeywords(
args, kwds, "O!", (char **)kwlist, &UnaryPredicate1D_Type, &obj)) args, kwds, "O!", (char **)kwlist, &UnaryPredicate1D_Type, &obj)) {
return NULL; return NULL;
}
if (!((BPy_UnaryPredicate1D *)obj)->up1D) { if (!((BPy_UnaryPredicate1D *)obj)->up1D) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"Operators.select(): 1st argument: invalid UnaryPredicate1D object"); "Operators.select(): 1st argument: invalid UnaryPredicate1D object");
return NULL; return NULL;
} }
if (Operators::select(*(((BPy_UnaryPredicate1D *)obj)->up1D)) < 0) { if (Operators::select(*(((BPy_UnaryPredicate1D *)obj)->up1D)) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.select() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.select() failed");
}
return NULL; return NULL;
} }
Py_RETURN_NONE; Py_RETURN_NONE;
@@ -165,8 +169,9 @@ static PyObject *Operators_chain(BPy_Operators * /*self*/, PyObject *args, PyObj
if (!obj3) { if (!obj3) {
if (Operators::chain(*(((BPy_ChainingIterator *)obj1)->c_it), if (Operators::chain(*(((BPy_ChainingIterator *)obj1)->c_it),
*(((BPy_UnaryPredicate1D *)obj2)->up1D)) < 0) { *(((BPy_UnaryPredicate1D *)obj2)->up1D)) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.chain() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.chain() failed");
}
return NULL; return NULL;
} }
} }
@@ -179,8 +184,9 @@ static PyObject *Operators_chain(BPy_Operators * /*self*/, PyObject *args, PyObj
if (Operators::chain(*(((BPy_ChainingIterator *)obj1)->c_it), if (Operators::chain(*(((BPy_ChainingIterator *)obj1)->c_it),
*(((BPy_UnaryPredicate1D *)obj2)->up1D), *(((BPy_UnaryPredicate1D *)obj2)->up1D),
*(((BPy_UnaryFunction1DVoid *)obj3)->uf1D_void)) < 0) { *(((BPy_UnaryFunction1DVoid *)obj3)->uf1D_void)) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.chain() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.chain() failed");
}
return NULL; return NULL;
} }
} }
@@ -255,8 +261,9 @@ static PyObject *Operators_bidirectional_chain(BPy_Operators * /*self*/,
} }
if (!obj2) { if (!obj2) {
if (Operators::bidirectionalChain(*(((BPy_ChainingIterator *)obj1)->c_it)) < 0) { if (Operators::bidirectionalChain(*(((BPy_ChainingIterator *)obj1)->c_it)) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.bidirectional_chain() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.bidirectional_chain() failed");
}
return NULL; return NULL;
} }
} }
@@ -269,8 +276,9 @@ static PyObject *Operators_bidirectional_chain(BPy_Operators * /*self*/,
} }
if (Operators::bidirectionalChain(*(((BPy_ChainingIterator *)obj1)->c_it), if (Operators::bidirectionalChain(*(((BPy_ChainingIterator *)obj1)->c_it),
*(((BPy_UnaryPredicate1D *)obj2)->up1D)) < 0) { *(((BPy_UnaryPredicate1D *)obj2)->up1D)) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.bidirectional_chain() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.bidirectional_chain() failed");
}
return NULL; return NULL;
} }
} }
@@ -351,8 +359,9 @@ static PyObject *Operators_sequential_split(BPy_Operators * /*self*/,
if (Operators::sequentialSplit(*(((BPy_UnaryPredicate0D *)obj1)->up0D), if (Operators::sequentialSplit(*(((BPy_UnaryPredicate0D *)obj1)->up0D),
*(((BPy_UnaryPredicate0D *)obj2)->up0D), *(((BPy_UnaryPredicate0D *)obj2)->up0D),
f) < 0) { f) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.sequential_split() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.sequential_split() failed");
}
return NULL; return NULL;
} }
} }
@@ -367,8 +376,9 @@ static PyObject *Operators_sequential_split(BPy_Operators * /*self*/,
return NULL; return NULL;
} }
if (Operators::sequentialSplit(*(((BPy_UnaryPredicate0D *)obj1)->up0D), f) < 0) { if (Operators::sequentialSplit(*(((BPy_UnaryPredicate0D *)obj1)->up0D), f) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.sequential_split() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.sequential_split() failed");
}
return NULL; return NULL;
} }
} }
@@ -468,8 +478,9 @@ static PyObject *Operators_recursive_split(BPy_Operators * /*self*/,
if (Operators::recursiveSplit(*(((BPy_UnaryFunction0DDouble *)obj1)->uf0D_double), if (Operators::recursiveSplit(*(((BPy_UnaryFunction0DDouble *)obj1)->uf0D_double),
*(((BPy_UnaryPredicate1D *)obj2)->up1D), *(((BPy_UnaryPredicate1D *)obj2)->up1D),
f) < 0) { f) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.recursive_split() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.recursive_split() failed");
}
return NULL; return NULL;
} }
} }
@@ -508,8 +519,9 @@ static PyObject *Operators_recursive_split(BPy_Operators * /*self*/,
*(((BPy_UnaryPredicate0D *)obj2)->up0D), *(((BPy_UnaryPredicate0D *)obj2)->up0D),
*(((BPy_UnaryPredicate1D *)obj3)->up1D), *(((BPy_UnaryPredicate1D *)obj3)->up1D),
f) < 0) { f) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.recursive_split() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.recursive_split() failed");
}
return NULL; return NULL;
} }
} }
@@ -535,16 +547,18 @@ static PyObject *Operators_sort(BPy_Operators * /*self*/, PyObject *args, PyObje
PyObject *obj = 0; PyObject *obj = 0;
if (!PyArg_ParseTupleAndKeywords( if (!PyArg_ParseTupleAndKeywords(
args, kwds, "O!", (char **)kwlist, &BinaryPredicate1D_Type, &obj)) args, kwds, "O!", (char **)kwlist, &BinaryPredicate1D_Type, &obj)) {
return NULL; return NULL;
}
if (!((BPy_BinaryPredicate1D *)obj)->bp1D) { if (!((BPy_BinaryPredicate1D *)obj)->bp1D) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"Operators.sort(): 1st argument: invalid BinaryPredicate1D object"); "Operators.sort(): 1st argument: invalid BinaryPredicate1D object");
return NULL; return NULL;
} }
if (Operators::sort(*(((BPy_BinaryPredicate1D *)obj)->bp1D)) < 0) { if (Operators::sort(*(((BPy_BinaryPredicate1D *)obj)->bp1D)) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.sort() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.sort() failed");
}
return NULL; return NULL;
} }
Py_RETURN_NONE; Py_RETURN_NONE;
@@ -603,8 +617,9 @@ static PyObject *Operators_create(BPy_Operators * /*self*/, PyObject *args, PyOb
shaders.push_back(shader); shaders.push_back(shader);
} }
if (Operators::create(*(((BPy_UnaryPredicate1D *)obj1)->up1D), shaders) < 0) { if (Operators::create(*(((BPy_UnaryPredicate1D *)obj1)->up1D), shaders) < 0) {
if (!PyErr_Occurred()) if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_RuntimeError, "Operators.create() failed"); PyErr_SetString(PyExc_RuntimeError, "Operators.create() failed");
}
return NULL; return NULL;
} }
Py_RETURN_NONE; Py_RETURN_NONE;
@@ -651,8 +666,9 @@ static PyObject *Operators_get_viewedge_from_index(BPy_Operators * /*self*/,
static const char *kwlist[] = {"i", NULL}; static const char *kwlist[] = {"i", NULL};
unsigned int i; unsigned int i;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", (char **)kwlist, &i)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", (char **)kwlist, &i)) {
return NULL; return NULL;
}
if (i >= Operators::getViewEdgesSize()) { if (i >= Operators::getViewEdgesSize()) {
PyErr_SetString(PyExc_IndexError, "index out of range"); PyErr_SetString(PyExc_IndexError, "index out of range");
return NULL; return NULL;
@@ -677,8 +693,9 @@ static PyObject *Operators_get_chain_from_index(BPy_Operators * /*self*/,
static const char *kwlist[] = {"i", NULL}; static const char *kwlist[] = {"i", NULL};
unsigned int i; unsigned int i;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", (char **)kwlist, &i)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", (char **)kwlist, &i)) {
return NULL; return NULL;
}
if (i >= Operators::getChainsSize()) { if (i >= Operators::getChainsSize()) {
PyErr_SetString(PyExc_IndexError, "index out of range"); PyErr_SetString(PyExc_IndexError, "index out of range");
return NULL; return NULL;
@@ -703,8 +720,9 @@ static PyObject *Operators_get_stroke_from_index(BPy_Operators * /*self*/,
static const char *kwlist[] = {"i", NULL}; static const char *kwlist[] = {"i", NULL};
unsigned int i; unsigned int i;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", (char **)kwlist, &i)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", (char **)kwlist, &i)) {
return NULL; return NULL;
}
if (i >= Operators::getStrokesSize()) { if (i >= Operators::getStrokesSize()) {
PyErr_SetString(PyExc_IndexError, "index out of range"); PyErr_SetString(PyExc_IndexError, "index out of range");
return NULL; return NULL;

View File

@@ -35,11 +35,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int SShape_Init(PyObject *module) int SShape_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&SShape_Type) < 0) if (PyType_Ready(&SShape_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&SShape_Type); Py_INCREF(&SShape_Type);
PyModule_AddObject(module, "SShape", (PyObject *)&SShape_Type); PyModule_AddObject(module, "SShape", (PyObject *)&SShape_Type);
@@ -68,20 +70,24 @@ static int SShape_init(BPy_SShape *self, PyObject *args, PyObject *kwds)
static const char *kwlist[] = {"brother", NULL}; static const char *kwlist[] = {"brother", NULL};
PyObject *brother = 0; PyObject *brother = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &SShape_Type, &brother)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &SShape_Type, &brother)) {
return -1; return -1;
if (!brother) }
if (!brother) {
self->ss = new SShape(); self->ss = new SShape();
else }
else {
self->ss = new SShape(*(((BPy_SShape *)brother)->ss)); self->ss = new SShape(*(((BPy_SShape *)brother)->ss));
}
self->borrowed = false; self->borrowed = false;
return 0; return 0;
} }
static void SShape_dealloc(BPy_SShape *self) static void SShape_dealloc(BPy_SShape *self)
{ {
if (self->ss && !self->borrowed) if (self->ss && !self->borrowed) {
delete self->ss; delete self->ss;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }
@@ -103,8 +109,9 @@ static PyObject *SShape_add_edge(BPy_SShape *self, PyObject *args, PyObject *kwd
static const char *kwlist[] = {"edge", NULL}; static const char *kwlist[] = {"edge", NULL};
PyObject *py_fe = 0; PyObject *py_fe = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &FEdge_Type, &py_fe)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &FEdge_Type, &py_fe)) {
return NULL; return NULL;
}
self->ss->AddEdge(((BPy_FEdge *)py_fe)->fe); self->ss->AddEdge(((BPy_FEdge *)py_fe)->fe);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -123,8 +130,9 @@ static PyObject *SShape_add_vertex(BPy_SShape *self, PyObject *args, PyObject *k
static const char *kwlist[] = {"edge", NULL}; static const char *kwlist[] = {"edge", NULL};
PyObject *py_sv = 0; PyObject *py_sv = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &SVertex_Type, &py_sv)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &SVertex_Type, &py_sv)) {
return NULL; return NULL;
}
self->ss->AddNewVertex(((BPy_SVertex *)py_sv)->sv); self->ss->AddNewVertex(((BPy_SVertex *)py_sv)->sv);
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@@ -31,11 +31,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int StrokeAttribute_Init(PyObject *module) int StrokeAttribute_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&StrokeAttribute_Type) < 0) if (PyType_Ready(&StrokeAttribute_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&StrokeAttribute_Type); Py_INCREF(&StrokeAttribute_Type);
PyModule_AddObject(module, "StrokeAttribute", (PyObject *)&StrokeAttribute_Type); PyModule_AddObject(module, "StrokeAttribute", (PyObject *)&StrokeAttribute_Type);
@@ -101,10 +103,12 @@ static int StrokeAttribute_init(BPy_StrokeAttribute *self, PyObject *args, PyObj
if (PyArg_ParseTupleAndKeywords( if (PyArg_ParseTupleAndKeywords(
args, kwds, "|O!", (char **)kwlist_1, &StrokeAttribute_Type, &obj1)) { args, kwds, "|O!", (char **)kwlist_1, &StrokeAttribute_Type, &obj1)) {
if (!obj1) if (!obj1) {
self->sa = new StrokeAttribute(); self->sa = new StrokeAttribute();
else }
else {
self->sa = new StrokeAttribute(*(((BPy_StrokeAttribute *)obj1)->sa)); self->sa = new StrokeAttribute(*(((BPy_StrokeAttribute *)obj1)->sa));
}
} }
else if (PyErr_Clear(), else if (PyErr_Clear(),
PyArg_ParseTupleAndKeywords(args, PyArg_ParseTupleAndKeywords(args,
@@ -142,8 +146,9 @@ static int StrokeAttribute_init(BPy_StrokeAttribute *self, PyObject *args, PyObj
static void StrokeAttribute_dealloc(BPy_StrokeAttribute *self) static void StrokeAttribute_dealloc(BPy_StrokeAttribute *self)
{ {
if (self->sa && !self->borrowed) if (self->sa && !self->borrowed) {
delete self->sa; delete self->sa;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }
@@ -174,8 +179,9 @@ static PyObject *StrokeAttribute_get_attribute_real(BPy_StrokeAttribute *self,
static const char *kwlist[] = {"name", NULL}; static const char *kwlist[] = {"name", NULL};
char *attr; char *attr;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) {
return NULL; return NULL;
}
double a = self->sa->getAttributeReal(attr); double a = self->sa->getAttributeReal(attr);
return PyFloat_FromDouble(a); return PyFloat_FromDouble(a);
} }
@@ -197,8 +203,9 @@ static PyObject *StrokeAttribute_get_attribute_vec2(BPy_StrokeAttribute *self,
static const char *kwlist[] = {"name", NULL}; static const char *kwlist[] = {"name", NULL};
char *attr; char *attr;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) {
return NULL; return NULL;
}
Vec2f a = self->sa->getAttributeVec2f(attr); Vec2f a = self->sa->getAttributeVec2f(attr);
return Vector_from_Vec2f(a); return Vector_from_Vec2f(a);
} }
@@ -220,8 +227,9 @@ static PyObject *StrokeAttribute_get_attribute_vec3(BPy_StrokeAttribute *self,
static const char *kwlist[] = {"name", NULL}; static const char *kwlist[] = {"name", NULL};
char *attr; char *attr;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) {
return NULL; return NULL;
}
Vec3f a = self->sa->getAttributeVec3f(attr); Vec3f a = self->sa->getAttributeVec3f(attr);
return Vector_from_Vec3f(a); return Vector_from_Vec3f(a);
} }
@@ -243,8 +251,9 @@ static PyObject *StrokeAttribute_has_attribute_real(BPy_StrokeAttribute *self,
static const char *kwlist[] = {"name", NULL}; static const char *kwlist[] = {"name", NULL};
char *attr; char *attr;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) {
return NULL; return NULL;
}
return PyBool_from_bool(self->sa->isAttributeAvailableReal(attr)); return PyBool_from_bool(self->sa->isAttributeAvailableReal(attr));
} }
@@ -266,8 +275,9 @@ static PyObject *StrokeAttribute_has_attribute_vec2(BPy_StrokeAttribute *self,
static const char *kwlist[] = {"name", NULL}; static const char *kwlist[] = {"name", NULL};
char *attr; char *attr;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) {
return NULL; return NULL;
}
return PyBool_from_bool(self->sa->isAttributeAvailableVec2f(attr)); return PyBool_from_bool(self->sa->isAttributeAvailableVec2f(attr));
} }
@@ -289,8 +299,9 @@ static PyObject *StrokeAttribute_has_attribute_vec3(BPy_StrokeAttribute *self,
static const char *kwlist[] = {"name", NULL}; static const char *kwlist[] = {"name", NULL};
char *attr; char *attr;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", (char **)kwlist, &attr)) {
return NULL; return NULL;
}
return PyBool_from_bool(self->sa->isAttributeAvailableVec3f(attr)); return PyBool_from_bool(self->sa->isAttributeAvailableVec3f(attr));
} }
@@ -314,8 +325,9 @@ static PyObject *StrokeAttribute_set_attribute_real(BPy_StrokeAttribute *self,
char *s = 0; char *s = 0;
double d = 0; double d = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "sd", (char **)kwlist, &s, &d)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "sd", (char **)kwlist, &s, &d)) {
return NULL; return NULL;
}
self->sa->setAttributeReal(s, d); self->sa->setAttributeReal(s, d);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -341,8 +353,9 @@ static PyObject *StrokeAttribute_set_attribute_vec2(BPy_StrokeAttribute *self,
PyObject *obj = 0; PyObject *obj = 0;
Vec2f vec; Vec2f vec;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO", (char **)kwlist, &s, &obj)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO", (char **)kwlist, &s, &obj)) {
return NULL; return NULL;
}
if (!Vec2f_ptr_from_PyObject(obj, vec)) { if (!Vec2f_ptr_from_PyObject(obj, vec)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"argument 2 must be a 2D vector (either a list of 2 elements or Vector)"); "argument 2 must be a 2D vector (either a list of 2 elements or Vector)");
@@ -373,8 +386,9 @@ static PyObject *StrokeAttribute_set_attribute_vec3(BPy_StrokeAttribute *self,
PyObject *obj = 0; PyObject *obj = 0;
Vec3f vec; Vec3f vec;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO", (char **)kwlist, &s, &obj)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO", (char **)kwlist, &s, &obj)) {
return NULL; return NULL;
}
if (!Vec3f_ptr_from_PyObject(obj, vec)) { if (!Vec3f_ptr_from_PyObject(obj, vec)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"argument 2 must be a 3D vector (either a list of 3 elements or Vector)"); "argument 2 must be a 3D vector (either a list of 3 elements or Vector)");
@@ -432,8 +446,9 @@ static PyMethodDef BPy_StrokeAttribute_methods[] = {
static int StrokeAttribute_mathutils_check(BaseMathObject *bmo) static int StrokeAttribute_mathutils_check(BaseMathObject *bmo)
{ {
if (!BPy_StrokeAttribute_Check(bmo->cb_user)) if (!BPy_StrokeAttribute_Check(bmo->cb_user)) {
return -1; return -1;
}
return 0; return 0;
} }

View File

@@ -51,104 +51,124 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int StrokeShader_Init(PyObject *module) int StrokeShader_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&StrokeShader_Type) < 0) if (PyType_Ready(&StrokeShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&StrokeShader_Type); Py_INCREF(&StrokeShader_Type);
PyModule_AddObject(module, "StrokeShader", (PyObject *)&StrokeShader_Type); PyModule_AddObject(module, "StrokeShader", (PyObject *)&StrokeShader_Type);
if (PyType_Ready(&BackboneStretcherShader_Type) < 0) if (PyType_Ready(&BackboneStretcherShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&BackboneStretcherShader_Type); Py_INCREF(&BackboneStretcherShader_Type);
PyModule_AddObject(module, "BackboneStretcherShader", (PyObject *)&BackboneStretcherShader_Type); PyModule_AddObject(module, "BackboneStretcherShader", (PyObject *)&BackboneStretcherShader_Type);
if (PyType_Ready(&BezierCurveShader_Type) < 0) if (PyType_Ready(&BezierCurveShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&BezierCurveShader_Type); Py_INCREF(&BezierCurveShader_Type);
PyModule_AddObject(module, "BezierCurveShader", (PyObject *)&BezierCurveShader_Type); PyModule_AddObject(module, "BezierCurveShader", (PyObject *)&BezierCurveShader_Type);
if (PyType_Ready(&BlenderTextureShader_Type) < 0) if (PyType_Ready(&BlenderTextureShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&BlenderTextureShader_Type); Py_INCREF(&BlenderTextureShader_Type);
PyModule_AddObject(module, "BlenderTextureShader", (PyObject *)&BlenderTextureShader_Type); PyModule_AddObject(module, "BlenderTextureShader", (PyObject *)&BlenderTextureShader_Type);
if (PyType_Ready(&CalligraphicShader_Type) < 0) if (PyType_Ready(&CalligraphicShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&CalligraphicShader_Type); Py_INCREF(&CalligraphicShader_Type);
PyModule_AddObject(module, "CalligraphicShader", (PyObject *)&CalligraphicShader_Type); PyModule_AddObject(module, "CalligraphicShader", (PyObject *)&CalligraphicShader_Type);
if (PyType_Ready(&ColorNoiseShader_Type) < 0) if (PyType_Ready(&ColorNoiseShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ColorNoiseShader_Type); Py_INCREF(&ColorNoiseShader_Type);
PyModule_AddObject(module, "ColorNoiseShader", (PyObject *)&ColorNoiseShader_Type); PyModule_AddObject(module, "ColorNoiseShader", (PyObject *)&ColorNoiseShader_Type);
if (PyType_Ready(&ConstantColorShader_Type) < 0) if (PyType_Ready(&ConstantColorShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ConstantColorShader_Type); Py_INCREF(&ConstantColorShader_Type);
PyModule_AddObject(module, "ConstantColorShader", (PyObject *)&ConstantColorShader_Type); PyModule_AddObject(module, "ConstantColorShader", (PyObject *)&ConstantColorShader_Type);
if (PyType_Ready(&ConstantThicknessShader_Type) < 0) if (PyType_Ready(&ConstantThicknessShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ConstantThicknessShader_Type); Py_INCREF(&ConstantThicknessShader_Type);
PyModule_AddObject(module, "ConstantThicknessShader", (PyObject *)&ConstantThicknessShader_Type); PyModule_AddObject(module, "ConstantThicknessShader", (PyObject *)&ConstantThicknessShader_Type);
if (PyType_Ready(&ConstrainedIncreasingThicknessShader_Type) < 0) if (PyType_Ready(&ConstrainedIncreasingThicknessShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ConstrainedIncreasingThicknessShader_Type); Py_INCREF(&ConstrainedIncreasingThicknessShader_Type);
PyModule_AddObject(module, PyModule_AddObject(module,
"ConstrainedIncreasingThicknessShader", "ConstrainedIncreasingThicknessShader",
(PyObject *)&ConstrainedIncreasingThicknessShader_Type); (PyObject *)&ConstrainedIncreasingThicknessShader_Type);
if (PyType_Ready(&GuidingLinesShader_Type) < 0) if (PyType_Ready(&GuidingLinesShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&GuidingLinesShader_Type); Py_INCREF(&GuidingLinesShader_Type);
PyModule_AddObject(module, "GuidingLinesShader", (PyObject *)&GuidingLinesShader_Type); PyModule_AddObject(module, "GuidingLinesShader", (PyObject *)&GuidingLinesShader_Type);
if (PyType_Ready(&IncreasingColorShader_Type) < 0) if (PyType_Ready(&IncreasingColorShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&IncreasingColorShader_Type); Py_INCREF(&IncreasingColorShader_Type);
PyModule_AddObject(module, "IncreasingColorShader", (PyObject *)&IncreasingColorShader_Type); PyModule_AddObject(module, "IncreasingColorShader", (PyObject *)&IncreasingColorShader_Type);
if (PyType_Ready(&IncreasingThicknessShader_Type) < 0) if (PyType_Ready(&IncreasingThicknessShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&IncreasingThicknessShader_Type); Py_INCREF(&IncreasingThicknessShader_Type);
PyModule_AddObject( PyModule_AddObject(
module, "IncreasingThicknessShader", (PyObject *)&IncreasingThicknessShader_Type); module, "IncreasingThicknessShader", (PyObject *)&IncreasingThicknessShader_Type);
if (PyType_Ready(&PolygonalizationShader_Type) < 0) if (PyType_Ready(&PolygonalizationShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&PolygonalizationShader_Type); Py_INCREF(&PolygonalizationShader_Type);
PyModule_AddObject(module, "PolygonalizationShader", (PyObject *)&PolygonalizationShader_Type); PyModule_AddObject(module, "PolygonalizationShader", (PyObject *)&PolygonalizationShader_Type);
if (PyType_Ready(&SamplingShader_Type) < 0) if (PyType_Ready(&SamplingShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&SamplingShader_Type); Py_INCREF(&SamplingShader_Type);
PyModule_AddObject(module, "SamplingShader", (PyObject *)&SamplingShader_Type); PyModule_AddObject(module, "SamplingShader", (PyObject *)&SamplingShader_Type);
if (PyType_Ready(&SmoothingShader_Type) < 0) if (PyType_Ready(&SmoothingShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&SmoothingShader_Type); Py_INCREF(&SmoothingShader_Type);
PyModule_AddObject(module, "SmoothingShader", (PyObject *)&SmoothingShader_Type); PyModule_AddObject(module, "SmoothingShader", (PyObject *)&SmoothingShader_Type);
if (PyType_Ready(&SpatialNoiseShader_Type) < 0) if (PyType_Ready(&SpatialNoiseShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&SpatialNoiseShader_Type); Py_INCREF(&SpatialNoiseShader_Type);
PyModule_AddObject(module, "SpatialNoiseShader", (PyObject *)&SpatialNoiseShader_Type); PyModule_AddObject(module, "SpatialNoiseShader", (PyObject *)&SpatialNoiseShader_Type);
if (PyType_Ready(&StrokeTextureStepShader_Type) < 0) if (PyType_Ready(&StrokeTextureStepShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&StrokeTextureStepShader_Type); Py_INCREF(&StrokeTextureStepShader_Type);
PyModule_AddObject(module, "StrokeTextureStepShader", (PyObject *)&StrokeTextureStepShader_Type); PyModule_AddObject(module, "StrokeTextureStepShader", (PyObject *)&StrokeTextureStepShader_Type);
if (PyType_Ready(&ThicknessNoiseShader_Type) < 0) if (PyType_Ready(&ThicknessNoiseShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ThicknessNoiseShader_Type); Py_INCREF(&ThicknessNoiseShader_Type);
PyModule_AddObject(module, "ThicknessNoiseShader", (PyObject *)&ThicknessNoiseShader_Type); PyModule_AddObject(module, "ThicknessNoiseShader", (PyObject *)&ThicknessNoiseShader_Type);
if (PyType_Ready(&TipRemoverShader_Type) < 0) if (PyType_Ready(&TipRemoverShader_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&TipRemoverShader_Type); Py_INCREF(&TipRemoverShader_Type);
PyModule_AddObject(module, "TipRemoverShader", (PyObject *)&TipRemoverShader_Type); PyModule_AddObject(module, "TipRemoverShader", (PyObject *)&TipRemoverShader_Type);
@@ -180,8 +200,9 @@ static int StrokeShader___init__(BPy_StrokeShader *self, PyObject *args, PyObjec
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->ss = new StrokeShader(); self->ss = new StrokeShader();
self->ss->py_ss = (PyObject *)self; self->ss->py_ss = (PyObject *)self;
return 0; return 0;
@@ -189,8 +210,9 @@ static int StrokeShader___init__(BPy_StrokeShader *self, PyObject *args, PyObjec
static void StrokeShader___dealloc__(BPy_StrokeShader *self) static void StrokeShader___dealloc__(BPy_StrokeShader *self)
{ {
if (self->ss) if (self->ss) {
delete self->ss; delete self->ss;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }
@@ -212,8 +234,9 @@ static PyObject *StrokeShader_shade(BPy_StrokeShader *self, PyObject *args, PyOb
static const char *kwlist[] = {"stroke", NULL}; static const char *kwlist[] = {"stroke", NULL};
PyObject *py_s = 0; PyObject *py_s = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &Stroke_Type, &py_s)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &Stroke_Type, &py_s)) {
return NULL; return NULL;
}
if (typeid(*(self->ss)) == typeid(StrokeShader)) { if (typeid(*(self->ss)) == typeid(StrokeShader)) {
PyErr_SetString(PyExc_TypeError, "shade method not properly overridden"); PyErr_SetString(PyExc_TypeError, "shade method not properly overridden");

View File

@@ -40,11 +40,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int UnaryFunction0D_Init(PyObject *module) int UnaryFunction0D_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&UnaryFunction0D_Type) < 0) if (PyType_Ready(&UnaryFunction0D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&UnaryFunction0D_Type); Py_INCREF(&UnaryFunction0D_Type);
PyModule_AddObject(module, "UnaryFunction0D", (PyObject *)&UnaryFunction0D_Type); PyModule_AddObject(module, "UnaryFunction0D", (PyObject *)&UnaryFunction0D_Type);

View File

@@ -38,11 +38,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int UnaryFunction1D_Init(PyObject *module) int UnaryFunction1D_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&UnaryFunction1D_Type) < 0) if (PyType_Ready(&UnaryFunction1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&UnaryFunction1D_Type); Py_INCREF(&UnaryFunction1D_Type);
PyModule_AddObject(module, "UnaryFunction1D", (PyObject *)&UnaryFunction1D_Type); PyModule_AddObject(module, "UnaryFunction1D", (PyObject *)&UnaryFunction1D_Type);

View File

@@ -34,21 +34,25 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int UnaryPredicate0D_Init(PyObject *module) int UnaryPredicate0D_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&UnaryPredicate0D_Type) < 0) if (PyType_Ready(&UnaryPredicate0D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&UnaryPredicate0D_Type); Py_INCREF(&UnaryPredicate0D_Type);
PyModule_AddObject(module, "UnaryPredicate0D", (PyObject *)&UnaryPredicate0D_Type); PyModule_AddObject(module, "UnaryPredicate0D", (PyObject *)&UnaryPredicate0D_Type);
if (PyType_Ready(&FalseUP0D_Type) < 0) if (PyType_Ready(&FalseUP0D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&FalseUP0D_Type); Py_INCREF(&FalseUP0D_Type);
PyModule_AddObject(module, "FalseUP0D", (PyObject *)&FalseUP0D_Type); PyModule_AddObject(module, "FalseUP0D", (PyObject *)&FalseUP0D_Type);
if (PyType_Ready(&TrueUP0D_Type) < 0) if (PyType_Ready(&TrueUP0D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&TrueUP0D_Type); Py_INCREF(&TrueUP0D_Type);
PyModule_AddObject(module, "TrueUP0D", (PyObject *)&TrueUP0D_Type); PyModule_AddObject(module, "TrueUP0D", (PyObject *)&TrueUP0D_Type);
@@ -83,8 +87,9 @@ static int UnaryPredicate0D___init__(BPy_UnaryPredicate0D *self, PyObject *args,
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->up0D = new UnaryPredicate0D(); self->up0D = new UnaryPredicate0D();
self->up0D->py_up0D = (PyObject *)self; self->up0D->py_up0D = (PyObject *)self;
return 0; return 0;
@@ -92,8 +97,9 @@ static int UnaryPredicate0D___init__(BPy_UnaryPredicate0D *self, PyObject *args,
static void UnaryPredicate0D___dealloc__(BPy_UnaryPredicate0D *self) static void UnaryPredicate0D___dealloc__(BPy_UnaryPredicate0D *self)
{ {
if (self->up0D) if (self->up0D) {
delete self->up0D; delete self->up0D;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }
@@ -110,8 +116,9 @@ static PyObject *UnaryPredicate0D___call__(BPy_UnaryPredicate0D *self,
PyObject *py_if0D_it; PyObject *py_if0D_it;
if (!PyArg_ParseTupleAndKeywords( if (!PyArg_ParseTupleAndKeywords(
args, kwds, "O!", (char **)kwlist, &Interface0DIterator_Type, &py_if0D_it)) args, kwds, "O!", (char **)kwlist, &Interface0DIterator_Type, &py_if0D_it)) {
return NULL; return NULL;
}
Interface0DIterator *if0D_it = ((BPy_Interface0DIterator *)py_if0D_it)->if0D_it; Interface0DIterator *if0D_it = ((BPy_Interface0DIterator *)py_if0D_it)->if0D_it;

View File

@@ -43,63 +43,75 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int UnaryPredicate1D_Init(PyObject *module) int UnaryPredicate1D_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&UnaryPredicate1D_Type) < 0) if (PyType_Ready(&UnaryPredicate1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&UnaryPredicate1D_Type); Py_INCREF(&UnaryPredicate1D_Type);
PyModule_AddObject(module, "UnaryPredicate1D", (PyObject *)&UnaryPredicate1D_Type); PyModule_AddObject(module, "UnaryPredicate1D", (PyObject *)&UnaryPredicate1D_Type);
if (PyType_Ready(&ContourUP1D_Type) < 0) if (PyType_Ready(&ContourUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ContourUP1D_Type); Py_INCREF(&ContourUP1D_Type);
PyModule_AddObject(module, "ContourUP1D", (PyObject *)&ContourUP1D_Type); PyModule_AddObject(module, "ContourUP1D", (PyObject *)&ContourUP1D_Type);
if (PyType_Ready(&DensityLowerThanUP1D_Type) < 0) if (PyType_Ready(&DensityLowerThanUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&DensityLowerThanUP1D_Type); Py_INCREF(&DensityLowerThanUP1D_Type);
PyModule_AddObject(module, "DensityLowerThanUP1D", (PyObject *)&DensityLowerThanUP1D_Type); PyModule_AddObject(module, "DensityLowerThanUP1D", (PyObject *)&DensityLowerThanUP1D_Type);
if (PyType_Ready(&EqualToChainingTimeStampUP1D_Type) < 0) if (PyType_Ready(&EqualToChainingTimeStampUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&EqualToChainingTimeStampUP1D_Type); Py_INCREF(&EqualToChainingTimeStampUP1D_Type);
PyModule_AddObject( PyModule_AddObject(
module, "EqualToChainingTimeStampUP1D", (PyObject *)&EqualToChainingTimeStampUP1D_Type); module, "EqualToChainingTimeStampUP1D", (PyObject *)&EqualToChainingTimeStampUP1D_Type);
if (PyType_Ready(&EqualToTimeStampUP1D_Type) < 0) if (PyType_Ready(&EqualToTimeStampUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&EqualToTimeStampUP1D_Type); Py_INCREF(&EqualToTimeStampUP1D_Type);
PyModule_AddObject(module, "EqualToTimeStampUP1D", (PyObject *)&EqualToTimeStampUP1D_Type); PyModule_AddObject(module, "EqualToTimeStampUP1D", (PyObject *)&EqualToTimeStampUP1D_Type);
if (PyType_Ready(&ExternalContourUP1D_Type) < 0) if (PyType_Ready(&ExternalContourUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ExternalContourUP1D_Type); Py_INCREF(&ExternalContourUP1D_Type);
PyModule_AddObject(module, "ExternalContourUP1D", (PyObject *)&ExternalContourUP1D_Type); PyModule_AddObject(module, "ExternalContourUP1D", (PyObject *)&ExternalContourUP1D_Type);
if (PyType_Ready(&FalseUP1D_Type) < 0) if (PyType_Ready(&FalseUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&FalseUP1D_Type); Py_INCREF(&FalseUP1D_Type);
PyModule_AddObject(module, "FalseUP1D", (PyObject *)&FalseUP1D_Type); PyModule_AddObject(module, "FalseUP1D", (PyObject *)&FalseUP1D_Type);
if (PyType_Ready(&QuantitativeInvisibilityUP1D_Type) < 0) if (PyType_Ready(&QuantitativeInvisibilityUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&QuantitativeInvisibilityUP1D_Type); Py_INCREF(&QuantitativeInvisibilityUP1D_Type);
PyModule_AddObject( PyModule_AddObject(
module, "QuantitativeInvisibilityUP1D", (PyObject *)&QuantitativeInvisibilityUP1D_Type); module, "QuantitativeInvisibilityUP1D", (PyObject *)&QuantitativeInvisibilityUP1D_Type);
if (PyType_Ready(&ShapeUP1D_Type) < 0) if (PyType_Ready(&ShapeUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ShapeUP1D_Type); Py_INCREF(&ShapeUP1D_Type);
PyModule_AddObject(module, "ShapeUP1D", (PyObject *)&ShapeUP1D_Type); PyModule_AddObject(module, "ShapeUP1D", (PyObject *)&ShapeUP1D_Type);
if (PyType_Ready(&TrueUP1D_Type) < 0) if (PyType_Ready(&TrueUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&TrueUP1D_Type); Py_INCREF(&TrueUP1D_Type);
PyModule_AddObject(module, "TrueUP1D", (PyObject *)&TrueUP1D_Type); PyModule_AddObject(module, "TrueUP1D", (PyObject *)&TrueUP1D_Type);
if (PyType_Ready(&WithinImageBoundaryUP1D_Type) < 0) if (PyType_Ready(&WithinImageBoundaryUP1D_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&WithinImageBoundaryUP1D_Type); Py_INCREF(&WithinImageBoundaryUP1D_Type);
PyModule_AddObject(module, "WithinImageBoundaryUP1D", (PyObject *)&WithinImageBoundaryUP1D_Type); PyModule_AddObject(module, "WithinImageBoundaryUP1D", (PyObject *)&WithinImageBoundaryUP1D_Type);
@@ -133,8 +145,9 @@ static int UnaryPredicate1D___init__(BPy_UnaryPredicate1D *self, PyObject *args,
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->up1D = new UnaryPredicate1D(); self->up1D = new UnaryPredicate1D();
self->up1D->py_up1D = (PyObject *)self; self->up1D->py_up1D = (PyObject *)self;
return 0; return 0;
@@ -142,8 +155,9 @@ static int UnaryPredicate1D___init__(BPy_UnaryPredicate1D *self, PyObject *args,
static void UnaryPredicate1D___dealloc__(BPy_UnaryPredicate1D *self) static void UnaryPredicate1D___dealloc__(BPy_UnaryPredicate1D *self)
{ {
if (self->up1D) if (self->up1D) {
delete self->up1D; delete self->up1D;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }
@@ -159,8 +173,10 @@ static PyObject *UnaryPredicate1D___call__(BPy_UnaryPredicate1D *self,
static const char *kwlist[] = {"inter", NULL}; static const char *kwlist[] = {"inter", NULL};
PyObject *py_if1D; PyObject *py_if1D;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &Interface1D_Type, &py_if1D)) if (!PyArg_ParseTupleAndKeywords(
args, kwds, "O!", (char **)kwlist, &Interface1D_Type, &py_if1D)) {
return NULL; return NULL;
}
Interface1D *if1D = ((BPy_Interface1D *)py_if1D)->if1D; Interface1D *if1D = ((BPy_Interface1D *)py_if1D)->if1D;

View File

@@ -34,11 +34,13 @@ extern "C" {
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int ViewMap_Init(PyObject *module) int ViewMap_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&ViewMap_Type) < 0) if (PyType_Ready(&ViewMap_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ViewMap_Type); Py_INCREF(&ViewMap_Type);
PyModule_AddObject(module, "ViewMap", (PyObject *)&ViewMap_Type); PyModule_AddObject(module, "ViewMap", (PyObject *)&ViewMap_Type);
@@ -58,16 +60,18 @@ static int ViewMap_init(BPy_ViewMap *self, PyObject *args, PyObject *kwds)
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->vm = new ViewMap(); self->vm = new ViewMap();
return 0; return 0;
} }
static void ViewMap_dealloc(BPy_ViewMap *self) static void ViewMap_dealloc(BPy_ViewMap *self)
{ {
if (self->vm) if (self->vm) {
delete self->vm; delete self->vm;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }
@@ -93,11 +97,13 @@ static PyObject *ViewMap_get_closest_viewedge(BPy_ViewMap *self, PyObject *args,
static const char *kwlist[] = {"x", "y", NULL}; static const char *kwlist[] = {"x", "y", NULL};
double x, y; double x, y;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "dd", (char **)kwlist, &x, &y)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "dd", (char **)kwlist, &x, &y)) {
return NULL; return NULL;
}
ViewEdge *ve = const_cast<ViewEdge *>(self->vm->getClosestViewEdge(x, y)); ViewEdge *ve = const_cast<ViewEdge *>(self->vm->getClosestViewEdge(x, y));
if (ve) if (ve) {
return BPy_ViewEdge_from_ViewEdge(*ve); return BPy_ViewEdge_from_ViewEdge(*ve);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -118,11 +124,13 @@ static PyObject *ViewMap_get_closest_fedge(BPy_ViewMap *self, PyObject *args, Py
static const char *kwlist[] = {"x", "y", NULL}; static const char *kwlist[] = {"x", "y", NULL};
double x, y; double x, y;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "dd", (char **)kwlist, &x, &y)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "dd", (char **)kwlist, &x, &y)) {
return NULL; return NULL;
}
FEdge *fe = const_cast<FEdge *>(self->vm->getClosestFEdge(x, y)); FEdge *fe = const_cast<FEdge *>(self->vm->getClosestFEdge(x, y));
if (fe) if (fe) {
return Any_BPy_FEdge_from_FEdge(*fe); return Any_BPy_FEdge_from_FEdge(*fe);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@@ -35,11 +35,13 @@ extern "C" {
int ViewShape_Init(PyObject *module) int ViewShape_Init(PyObject *module)
{ {
if (module == NULL) if (module == NULL) {
return -1; return -1;
}
if (PyType_Ready(&ViewShape_Type) < 0) if (PyType_Ready(&ViewShape_Type) < 0) {
return -1; return -1;
}
Py_INCREF(&ViewShape_Type); Py_INCREF(&ViewShape_Type);
PyModule_AddObject(module, "ViewShape", (PyObject *)&ViewShape_Type); PyModule_AddObject(module, "ViewShape", (PyObject *)&ViewShape_Type);
@@ -107,8 +109,9 @@ static void ViewShape_dealloc(BPy_ViewShape *self)
self->vs->setSShape((SShape *)NULL); self->vs->setSShape((SShape *)NULL);
Py_DECREF(self->py_ss); Py_DECREF(self->py_ss);
} }
if (self->vs && !self->borrowed) if (self->vs && !self->borrowed) {
delete self->vs; delete self->vs;
}
Py_TYPE(self)->tp_free((PyObject *)self); Py_TYPE(self)->tp_free((PyObject *)self);
} }
@@ -130,8 +133,9 @@ static PyObject *ViewShape_add_edge(BPy_ViewShape *self, PyObject *args, PyObjec
static const char *kwlist[] = {"edge", NULL}; static const char *kwlist[] = {"edge", NULL};
PyObject *py_ve = 0; PyObject *py_ve = 0;
if (PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &ViewEdge_Type, &py_ve)) if (PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &ViewEdge_Type, &py_ve)) {
return NULL; return NULL;
}
self->vs->AddEdge(((BPy_ViewEdge *)py_ve)->ve); self->vs->AddEdge(((BPy_ViewEdge *)py_ve)->ve);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -149,8 +153,9 @@ static PyObject *ViewShape_add_vertex(BPy_ViewShape *self, PyObject *args, PyObj
static const char *kwlist[] = {"vertex", NULL}; static const char *kwlist[] = {"vertex", NULL};
PyObject *py_vv = 0; PyObject *py_vv = 0;
if (PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &ViewVertex_Type, &py_vv)) if (PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &ViewVertex_Type, &py_vv)) {
return NULL; return NULL;
}
self->vs->AddVertex(((BPy_ViewVertex *)py_vv)->vv); self->vs->AddVertex(((BPy_ViewVertex *)py_vv)->vv);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -179,8 +184,9 @@ PyDoc_STRVAR(ViewShape_sshape_doc,
static PyObject *ViewShape_sshape_get(BPy_ViewShape *self, void *UNUSED(closure)) static PyObject *ViewShape_sshape_get(BPy_ViewShape *self, void *UNUSED(closure))
{ {
SShape *ss = self->vs->sshape(); SShape *ss = self->vs->sshape();
if (!ss) if (!ss) {
Py_RETURN_NONE; Py_RETURN_NONE;
}
return BPy_SShape_from_SShape(*ss); return BPy_SShape_from_SShape(*ss);
} }
@@ -192,8 +198,9 @@ static int ViewShape_sshape_set(BPy_ViewShape *self, PyObject *value, void *UNUS
} }
BPy_SShape *py_ss = (BPy_SShape *)value; BPy_SShape *py_ss = (BPy_SShape *)value;
self->vs->setSShape(py_ss->ss); self->vs->setSShape(py_ss->ss);
if (self->py_ss) if (self->py_ss) {
Py_DECREF(self->py_ss); Py_DECREF(self->py_ss);
}
if (!py_ss->borrowed) { if (!py_ss->borrowed) {
self->py_ss = py_ss; self->py_ss = py_ss;
Py_INCREF(self->py_ss); Py_INCREF(self->py_ss);

View File

@@ -46,8 +46,9 @@ static int FalseBP1D___init__(BPy_FalseBP1D *self, PyObject *args, PyObject *kwd
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->py_bp1D.bp1D = new Predicates1D::FalseBP1D(); self->py_bp1D.bp1D = new Predicates1D::FalseBP1D();
return 0; return 0;
} }

View File

@@ -47,8 +47,9 @@ static int Length2DBP1D___init__(BPy_Length2DBP1D *self, PyObject *args, PyObjec
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->py_bp1D.bp1D = new Predicates1D::Length2DBP1D(); self->py_bp1D.bp1D = new Predicates1D::Length2DBP1D();
return 0; return 0;
} }

View File

@@ -46,8 +46,9 @@ static int SameShapeIdBP1D___init__(BPy_SameShapeIdBP1D *self, PyObject *args, P
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->py_bp1D.bp1D = new Predicates1D::SameShapeIdBP1D(); self->py_bp1D.bp1D = new Predicates1D::SameShapeIdBP1D();
return 0; return 0;
} }

View File

@@ -46,8 +46,9 @@ static int TrueBP1D___init__(BPy_TrueBP1D *self, PyObject *args, PyObject *kwds)
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->py_bp1D.bp1D = new Predicates1D::TrueBP1D(); self->py_bp1D.bp1D = new Predicates1D::TrueBP1D();
return 0; return 0;
} }

View File

@@ -75,8 +75,9 @@ static int ViewMapGradientNormBP1D___init__(BPy_ViewMapGradientNormBP1D *self,
float f = 2.0; float f = 2.0;
if (!PyArg_ParseTupleAndKeywords( if (!PyArg_ParseTupleAndKeywords(
args, kwds, "i|O!f", (char **)kwlist, &i, &IntegrationType_Type, &obj, &f)) args, kwds, "i|O!f", (char **)kwlist, &i, &IntegrationType_Type, &obj, &f)) {
return -1; return -1;
}
IntegrationType t = (obj) ? IntegrationType_from_BPy_IntegrationType(obj) : MEAN; IntegrationType t = (obj) ? IntegrationType_from_BPy_IntegrationType(obj) : MEAN;
self->py_bp1D.bp1D = new Predicates1D::ViewMapGradientNormBP1D(i, t, f); self->py_bp1D.bp1D = new Predicates1D::ViewMapGradientNormBP1D(i, t, f);
return 0; return 0;

View File

@@ -75,12 +75,14 @@ int Director_BPy_BinaryPredicate0D___call__(BinaryPredicate0D *bp0D,
PyObject *result = PyObject_CallMethod((PyObject *)bp0D->py_bp0D, "__call__", "OO", arg1, arg2); PyObject *result = PyObject_CallMethod((PyObject *)bp0D->py_bp0D, "__call__", "OO", arg1, arg2);
Py_DECREF(arg1); Py_DECREF(arg1);
Py_DECREF(arg2); Py_DECREF(arg2);
if (!result) if (!result) {
return -1; return -1;
}
int ret = PyObject_IsTrue(result); int ret = PyObject_IsTrue(result);
Py_DECREF(result); Py_DECREF(result);
if (ret < 0) if (ret < 0) {
return -1; return -1;
}
bp0D->result = ret; bp0D->result = ret;
return 0; return 0;
} }
@@ -104,12 +106,14 @@ int Director_BPy_BinaryPredicate1D___call__(BinaryPredicate1D *bp1D,
PyObject *result = PyObject_CallMethod((PyObject *)bp1D->py_bp1D, "__call__", "OO", arg1, arg2); PyObject *result = PyObject_CallMethod((PyObject *)bp1D->py_bp1D, "__call__", "OO", arg1, arg2);
Py_DECREF(arg1); Py_DECREF(arg1);
Py_DECREF(arg2); Py_DECREF(arg2);
if (!result) if (!result) {
return -1; return -1;
}
int ret = PyObject_IsTrue(result); int ret = PyObject_IsTrue(result);
Py_DECREF(result); Py_DECREF(result);
if (ret < 0) if (ret < 0) {
return -1; return -1;
}
bp1D->result = ret; bp1D->result = ret;
return 0; return 0;
} }
@@ -122,16 +126,19 @@ int Director_BPy_UnaryPredicate0D___call__(UnaryPredicate0D *up0D, Interface0DIt
return -1; return -1;
} }
PyObject *arg = BPy_Interface0DIterator_from_Interface0DIterator(if0D_it, false); PyObject *arg = BPy_Interface0DIterator_from_Interface0DIterator(if0D_it, false);
if (!arg) if (!arg) {
return -1; return -1;
}
PyObject *result = PyObject_CallMethod((PyObject *)up0D->py_up0D, "__call__", "O", arg); PyObject *result = PyObject_CallMethod((PyObject *)up0D->py_up0D, "__call__", "O", arg);
Py_DECREF(arg); Py_DECREF(arg);
if (!result) if (!result) {
return -1; return -1;
}
int ret = PyObject_IsTrue(result); int ret = PyObject_IsTrue(result);
Py_DECREF(result); Py_DECREF(result);
if (ret < 0) if (ret < 0) {
return -1; return -1;
}
up0D->result = ret; up0D->result = ret;
return 0; return 0;
} }
@@ -144,16 +151,19 @@ int Director_BPy_UnaryPredicate1D___call__(UnaryPredicate1D *up1D, Interface1D &
return -1; return -1;
} }
PyObject *arg = Any_BPy_Interface1D_from_Interface1D(if1D); PyObject *arg = Any_BPy_Interface1D_from_Interface1D(if1D);
if (!arg) if (!arg) {
return -1; return -1;
}
PyObject *result = PyObject_CallMethod((PyObject *)up1D->py_up1D, "__call__", "O", arg); PyObject *result = PyObject_CallMethod((PyObject *)up1D->py_up1D, "__call__", "O", arg);
Py_DECREF(arg); Py_DECREF(arg);
if (!result) if (!result) {
return -1; return -1;
}
int ret = PyObject_IsTrue(result); int ret = PyObject_IsTrue(result);
Py_DECREF(result); Py_DECREF(result);
if (ret < 0) if (ret < 0) {
return -1; return -1;
}
up1D->result = ret; up1D->result = ret;
return 0; return 0;
} }
@@ -166,12 +176,14 @@ int Director_BPy_StrokeShader_shade(StrokeShader *ss, Stroke &s)
return -1; return -1;
} }
PyObject *arg = BPy_Stroke_from_Stroke(s); PyObject *arg = BPy_Stroke_from_Stroke(s);
if (!arg) if (!arg) {
return -1; return -1;
}
PyObject *result = PyObject_CallMethod((PyObject *)ss->py_ss, "shade", "O", arg); PyObject *result = PyObject_CallMethod((PyObject *)ss->py_ss, "shade", "O", arg);
Py_DECREF(arg); Py_DECREF(arg);
if (!result) if (!result) {
return -1; return -1;
}
Py_DECREF(result); Py_DECREF(result);
return 0; return 0;
} }
@@ -184,8 +196,9 @@ int Director_BPy_ChainingIterator_init(ChainingIterator *c_it)
return -1; return -1;
} }
PyObject *result = PyObject_CallMethod((PyObject *)c_it->py_c_it, "init", NULL); PyObject *result = PyObject_CallMethod((PyObject *)c_it->py_c_it, "init", NULL);
if (!result) if (!result) {
return -1; return -1;
}
Py_DECREF(result); Py_DECREF(result);
return 0; return 0;
} }
@@ -197,12 +210,14 @@ int Director_BPy_ChainingIterator_traverse(ChainingIterator *c_it, AdjacencyIter
return -1; return -1;
} }
PyObject *arg = BPy_AdjacencyIterator_from_AdjacencyIterator(a_it); PyObject *arg = BPy_AdjacencyIterator_from_AdjacencyIterator(a_it);
if (!arg) if (!arg) {
return -1; return -1;
}
PyObject *result = PyObject_CallMethod((PyObject *)c_it->py_c_it, "traverse", "O", arg); PyObject *result = PyObject_CallMethod((PyObject *)c_it->py_c_it, "traverse", "O", arg);
Py_DECREF(arg); Py_DECREF(arg);
if (!result) if (!result) {
return -1; return -1;
}
if (BPy_ViewEdge_Check(result)) { if (BPy_ViewEdge_Check(result)) {
c_it->result = ((BPy_ViewEdge *)result)->ve; c_it->result = ((BPy_ViewEdge *)result)->ve;
} }
@@ -227,12 +242,14 @@ int Director_BPy_UnaryFunction0D___call__(void *uf0D, void *py_uf0D, Interface0D
} }
PyObject *obj = (PyObject *)py_uf0D; PyObject *obj = (PyObject *)py_uf0D;
PyObject *arg = BPy_Interface0DIterator_from_Interface0DIterator(if0D_it, false); PyObject *arg = BPy_Interface0DIterator_from_Interface0DIterator(if0D_it, false);
if (!arg) if (!arg) {
return -1; return -1;
}
PyObject *result = PyObject_CallMethod(obj, "__call__", "O", arg); PyObject *result = PyObject_CallMethod(obj, "__call__", "O", arg);
Py_DECREF(arg); Py_DECREF(arg);
if (!result) if (!result) {
return -1; return -1;
}
if (BPy_UnaryFunction0DDouble_Check(obj)) { if (BPy_UnaryFunction0DDouble_Check(obj)) {
((UnaryFunction0D<double> *)uf0D)->result = PyFloat_AsDouble(result); ((UnaryFunction0D<double> *)uf0D)->result = PyFloat_AsDouble(result);
} }
@@ -253,14 +270,16 @@ int Director_BPy_UnaryFunction0D___call__(void *uf0D, void *py_uf0D, Interface0D
} }
else if (BPy_UnaryFunction0DVec2f_Check(obj)) { else if (BPy_UnaryFunction0DVec2f_Check(obj)) {
Vec2f vec; Vec2f vec;
if (!Vec2f_ptr_from_Vector(result, vec)) if (!Vec2f_ptr_from_Vector(result, vec)) {
return -1; return -1;
}
((UnaryFunction0D<Vec2f> *)uf0D)->result = vec; ((UnaryFunction0D<Vec2f> *)uf0D)->result = vec;
} }
else if (BPy_UnaryFunction0DVec3f_Check(obj)) { else if (BPy_UnaryFunction0DVec3f_Check(obj)) {
Vec3f vec; Vec3f vec;
if (!Vec3f_ptr_from_Vector(result, vec)) if (!Vec3f_ptr_from_Vector(result, vec)) {
return -1; return -1;
}
((UnaryFunction0D<Vec3f> *)uf0D)->result = vec; ((UnaryFunction0D<Vec3f> *)uf0D)->result = vec;
} }
else if (BPy_UnaryFunction0DVectorViewShape_Check(obj)) { else if (BPy_UnaryFunction0DVectorViewShape_Check(obj)) {
@@ -287,12 +306,14 @@ int Director_BPy_UnaryFunction1D___call__(void *uf1D, void *py_uf1D, Interface1D
} }
PyObject *obj = (PyObject *)py_uf1D; PyObject *obj = (PyObject *)py_uf1D;
PyObject *arg = Any_BPy_Interface1D_from_Interface1D(if1D); PyObject *arg = Any_BPy_Interface1D_from_Interface1D(if1D);
if (!arg) if (!arg) {
return -1; return -1;
}
PyObject *result = PyObject_CallMethod(obj, "__call__", "O", arg); PyObject *result = PyObject_CallMethod(obj, "__call__", "O", arg);
Py_DECREF(arg); Py_DECREF(arg);
if (!result) if (!result) {
return -1; return -1;
}
if (BPy_UnaryFunction1DDouble_Check(obj)) { if (BPy_UnaryFunction1DDouble_Check(obj)) {
((UnaryFunction1D<double> *)uf1D)->result = PyFloat_AsDouble(result); ((UnaryFunction1D<double> *)uf1D)->result = PyFloat_AsDouble(result);
} }
@@ -307,14 +328,16 @@ int Director_BPy_UnaryFunction1D___call__(void *uf1D, void *py_uf1D, Interface1D
} }
else if (BPy_UnaryFunction1DVec2f_Check(obj)) { else if (BPy_UnaryFunction1DVec2f_Check(obj)) {
Vec2f vec; Vec2f vec;
if (!Vec2f_ptr_from_Vector(result, vec)) if (!Vec2f_ptr_from_Vector(result, vec)) {
return -1; return -1;
}
((UnaryFunction1D<Vec2f> *)uf1D)->result = vec; ((UnaryFunction1D<Vec2f> *)uf1D)->result = vec;
} }
else if (BPy_UnaryFunction1DVec3f_Check(obj)) { else if (BPy_UnaryFunction1DVec3f_Check(obj)) {
Vec3f vec; Vec3f vec;
if (!Vec3f_ptr_from_Vector(result, vec)) if (!Vec3f_ptr_from_Vector(result, vec)) {
return -1; return -1;
}
((UnaryFunction1D<Vec3f> *)uf1D)->result = vec; ((UnaryFunction1D<Vec3f> *)uf1D)->result = vec;
} }
else if (BPy_UnaryFunction1DVectorViewShape_Check(obj)) { else if (BPy_UnaryFunction1DVectorViewShape_Check(obj)) {

View File

@@ -88,10 +88,12 @@ static int CurvePoint_init(BPy_CurvePoint *self, PyObject *args, PyObject *kwds)
float t2d; float t2d;
if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &CurvePoint_Type, &obj1)) { if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &CurvePoint_Type, &obj1)) {
if (!obj1) if (!obj1) {
self->cp = new CurvePoint(); self->cp = new CurvePoint();
else }
else {
self->cp = new CurvePoint(*(((BPy_CurvePoint *)obj1)->cp)); self->cp = new CurvePoint(*(((BPy_CurvePoint *)obj1)->cp));
}
} }
else if (PyErr_Clear(), else if (PyErr_Clear(),
PyArg_ParseTupleAndKeywords(args, PyArg_ParseTupleAndKeywords(args,
@@ -148,8 +150,9 @@ PyDoc_STRVAR(CurvePoint_first_svertex_doc,
static PyObject *CurvePoint_first_svertex_get(BPy_CurvePoint *self, void *UNUSED(closure)) static PyObject *CurvePoint_first_svertex_get(BPy_CurvePoint *self, void *UNUSED(closure))
{ {
SVertex *A = self->cp->A(); SVertex *A = self->cp->A();
if (A) if (A) {
return BPy_SVertex_from_SVertex(*A); return BPy_SVertex_from_SVertex(*A);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -173,8 +176,9 @@ PyDoc_STRVAR(CurvePoint_second_svertex_doc,
static PyObject *CurvePoint_second_svertex_get(BPy_CurvePoint *self, void *UNUSED(closure)) static PyObject *CurvePoint_second_svertex_get(BPy_CurvePoint *self, void *UNUSED(closure))
{ {
SVertex *B = self->cp->B(); SVertex *B = self->cp->B();
if (B) if (B) {
return BPy_SVertex_from_SVertex(*B); return BPy_SVertex_from_SVertex(*B);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -201,8 +205,9 @@ static PyObject *CurvePoint_fedge_get(BPy_CurvePoint *self, void *UNUSED(closure
SVertex *A = self->cp->A(); SVertex *A = self->cp->A();
Interface0D *B = (Interface0D *)self->cp->B(); Interface0D *B = (Interface0D *)self->cp->B();
// B can be NULL under certain circumstances // B can be NULL under certain circumstances
if (B) if (B) {
return Any_BPy_Interface1D_from_Interface1D(*(A->getFEdge(*B))); return Any_BPy_Interface1D_from_Interface1D(*(A->getFEdge(*B)));
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@@ -65,10 +65,12 @@ static int SVertex_init(BPy_SVertex *self, PyObject *args, PyObject *kwds)
float v[3]; float v[3];
if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &SVertex_Type, &obj)) { if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &SVertex_Type, &obj)) {
if (!obj) if (!obj) {
self->sv = new SVertex(); self->sv = new SVertex();
else }
else {
self->sv = new SVertex(*(((BPy_SVertex *)obj)->sv)); self->sv = new SVertex(*(((BPy_SVertex *)obj)->sv));
}
} }
else if (PyErr_Clear(), else if (PyErr_Clear(),
PyArg_ParseTupleAndKeywords( PyArg_ParseTupleAndKeywords(
@@ -100,8 +102,9 @@ static PyObject *SVertex_add_normal(BPy_SVertex *self, PyObject *args, PyObject
PyObject *py_normal; PyObject *py_normal;
Vec3r n; Vec3r n;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &py_normal)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &py_normal)) {
return NULL; return NULL;
}
if (!Vec3r_ptr_from_PyObject(py_normal, n)) { if (!Vec3r_ptr_from_PyObject(py_normal, n)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"argument 1 must be a 3D vector (either a list of 3 elements or Vector)"); "argument 1 must be a 3D vector (either a list of 3 elements or Vector)");
@@ -124,8 +127,9 @@ static PyObject *SVertex_add_fedge(BPy_SVertex *self, PyObject *args, PyObject *
static const char *kwlist[] = {"fedge", NULL}; static const char *kwlist[] = {"fedge", NULL};
PyObject *py_fe; PyObject *py_fe;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &FEdge_Type, &py_fe)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &FEdge_Type, &py_fe)) {
return NULL; return NULL;
}
self->sv->AddFEdge(((BPy_FEdge *)py_fe)->fe); self->sv->AddFEdge(((BPy_FEdge *)py_fe)->fe);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -152,8 +156,9 @@ static PyMethodDef BPy_SVertex_methods[] = {
static int SVertex_mathutils_check(BaseMathObject *bmo) static int SVertex_mathutils_check(BaseMathObject *bmo)
{ {
if (!BPy_SVertex_Check(bmo->cb_user)) if (!BPy_SVertex_Check(bmo->cb_user)) {
return -1; return -1;
}
return 0; return 0;
} }
@@ -378,8 +383,9 @@ PyDoc_STRVAR(SVertex_viewvertex_doc,
static PyObject *SVertex_viewvertex_get(BPy_SVertex *self, void *UNUSED(closure)) static PyObject *SVertex_viewvertex_get(BPy_SVertex *self, void *UNUSED(closure))
{ {
ViewVertex *vv = self->sv->viewvertex(); ViewVertex *vv = self->sv->viewvertex();
if (vv) if (vv) {
return Any_BPy_ViewVertex_from_ViewVertex(*vv); return Any_BPy_ViewVertex_from_ViewVertex(*vv);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -399,8 +405,9 @@ PyDoc_STRVAR(SVertex_curvatures_doc,
static PyObject *SVertex_curvatures_get(BPy_SVertex *self, void *UNUSED(closure)) static PyObject *SVertex_curvatures_get(BPy_SVertex *self, void *UNUSED(closure))
{ {
const CurvatureInfo *info = self->sv->getCurvatureInfo(); const CurvatureInfo *info = self->sv->getCurvatureInfo();
if (!info) if (!info) {
Py_RETURN_NONE; Py_RETURN_NONE;
}
Vec3r e1(info->e1.x(), info->e1.y(), info->e1.z()); Vec3r e1(info->e1.x(), info->e1.y(), info->e1.z());
Vec3r e2(info->e2.x(), info->e2.y(), info->e2.z()); Vec3r e2(info->e2.x(), info->e2.y(), info->e2.z());
Vec3r er(info->er.x(), info->er.y(), info->er.z()); Vec3r er(info->er.x(), info->er.y(), info->er.z());

View File

@@ -105,8 +105,9 @@ static PyObject *ViewVertex_edges_iterator(BPy_ViewVertex *self, PyObject *args,
static const char *kwlist[] = {"edge", NULL}; static const char *kwlist[] = {"edge", NULL};
PyObject *py_ve; PyObject *py_ve;
if (PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &ViewEdge_Type, &py_ve)) if (PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &ViewEdge_Type, &py_ve)) {
return NULL; return NULL;
}
ViewEdge *ve = ((BPy_ViewEdge *)py_ve)->ve; ViewEdge *ve = ((BPy_ViewEdge *)py_ve)->ve;
ViewVertexInternal::orientedViewEdgeIterator ove_it(self->vv->edgesIterator(ve)); ViewVertexInternal::orientedViewEdgeIterator ove_it(self->vv->edgesIterator(ve));
return BPy_orientedViewEdgeIterator_from_orientedViewEdgeIterator(ove_it, false); return BPy_orientedViewEdgeIterator_from_orientedViewEdgeIterator(ove_it, false);
@@ -132,8 +133,9 @@ PyDoc_STRVAR(ViewVertex_nature_doc,
static PyObject *ViewVertex_nature_get(BPy_ViewVertex *self, void *UNUSED(closure)) static PyObject *ViewVertex_nature_get(BPy_ViewVertex *self, void *UNUSED(closure))
{ {
Nature::VertexNature nature = self->vv->getNature(); Nature::VertexNature nature = self->vv->getNature();
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return NULL; return NULL;
}
return BPy_Nature_from_Nature(nature); // return a copy return BPy_Nature_from_Nature(nature); // return a copy
} }

View File

@@ -149,10 +149,12 @@ static int StrokeVertex_init(BPy_StrokeVertex *self, PyObject *args, PyObject *k
&obj1, &obj1,
&StrokeAttribute_Type, &StrokeAttribute_Type,
&obj2)) { &obj2)) {
if (!obj2) if (!obj2) {
self->sv = new StrokeVertex(((BPy_SVertex *)obj1)->sv); self->sv = new StrokeVertex(((BPy_SVertex *)obj1)->sv);
else }
else {
self->sv = new StrokeVertex(((BPy_SVertex *)obj1)->sv, *(((BPy_StrokeAttribute *)obj2)->sa)); self->sv = new StrokeVertex(((BPy_SVertex *)obj1)->sv, *(((BPy_StrokeAttribute *)obj2)->sa));
}
} }
else { else {
PyErr_SetString(PyExc_TypeError, "invalid argument(s)"); PyErr_SetString(PyExc_TypeError, "invalid argument(s)");
@@ -171,8 +173,9 @@ static int StrokeVertex_init(BPy_StrokeVertex *self, PyObject *args, PyObject *k
static int StrokeVertex_mathutils_check(BaseMathObject *bmo) static int StrokeVertex_mathutils_check(BaseMathObject *bmo)
{ {
if (!BPy_StrokeVertex_Check(bmo->cb_user)) if (!BPy_StrokeVertex_Check(bmo->cb_user)) {
return -1; return -1;
}
return 0; return 0;
} }

View File

@@ -55,12 +55,15 @@ static int NonTVertex_init(BPy_NonTVertex *self, PyObject *args, PyObject *kwds)
static const char *kwlist[] = {"svertex", NULL}; static const char *kwlist[] = {"svertex", NULL};
PyObject *obj = 0; PyObject *obj = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &SVertex_Type, &obj)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &SVertex_Type, &obj)) {
return -1; return -1;
if (!obj) }
if (!obj) {
self->ntv = new NonTVertex(); self->ntv = new NonTVertex();
else }
else {
self->ntv = new NonTVertex(((BPy_SVertex *)obj)->sv); self->ntv = new NonTVertex(((BPy_SVertex *)obj)->sv);
}
self->py_vv.vv = self->ntv; self->py_vv.vv = self->ntv;
self->py_vv.py_if0D.if0D = self->ntv; self->py_vv.py_if0D.if0D = self->ntv;
self->py_vv.py_if0D.borrowed = false; self->py_vv.py_if0D.borrowed = false;
@@ -77,8 +80,9 @@ PyDoc_STRVAR(NonTVertex_svertex_doc,
static PyObject *NonTVertex_svertex_get(BPy_NonTVertex *self, void *UNUSED(closure)) static PyObject *NonTVertex_svertex_get(BPy_NonTVertex *self, void *UNUSED(closure))
{ {
SVertex *v = self->ntv->svertex(); SVertex *v = self->ntv->svertex();
if (v) if (v) {
return BPy_SVertex_from_SVertex(*v); return BPy_SVertex_from_SVertex(*v);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@@ -53,8 +53,9 @@ static int TVertex_init(BPy_TVertex *self, PyObject *args, PyObject *kwds)
{ {
static const char *kwlist[] = {NULL}; static const char *kwlist[] = {NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "", (char **)kwlist)) {
return -1; return -1;
}
self->tv = new TVertex(); self->tv = new TVertex();
self->py_vv.vv = self->tv; self->py_vv.vv = self->tv;
self->py_vv.py_if0D.if0D = self->tv; self->py_vv.py_if0D.if0D = self->tv;
@@ -77,11 +78,13 @@ static PyObject *TVertex_get_svertex(BPy_TVertex *self, PyObject *args, PyObject
static const char *kwlist[] = {"fedge", NULL}; static const char *kwlist[] = {"fedge", NULL};
PyObject *py_fe; PyObject *py_fe;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &FEdge_Type, &py_fe)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &FEdge_Type, &py_fe)) {
return NULL; return NULL;
}
SVertex *sv = self->tv->getSVertex(((BPy_FEdge *)py_fe)->fe); SVertex *sv = self->tv->getSVertex(((BPy_FEdge *)py_fe)->fe);
if (sv) if (sv) {
return BPy_SVertex_from_SVertex(*sv); return BPy_SVertex_from_SVertex(*sv);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -102,11 +105,13 @@ static PyObject *TVertex_get_mate(BPy_TVertex *self, PyObject *args, PyObject *k
static const char *kwlist[] = {"viewedge", NULL}; static const char *kwlist[] = {"viewedge", NULL};
PyObject *py_ve; PyObject *py_ve;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &ViewEdge_Type, &py_ve)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &ViewEdge_Type, &py_ve)) {
return NULL; return NULL;
}
ViewEdge *ve = self->tv->mate(((BPy_ViewEdge *)py_ve)->ve); ViewEdge *ve = self->tv->mate(((BPy_ViewEdge *)py_ve)->ve);
if (ve) if (ve) {
return BPy_ViewEdge_from_ViewEdge(*ve); return BPy_ViewEdge_from_ViewEdge(*ve);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -132,8 +137,9 @@ PyDoc_STRVAR(TVertex_front_svertex_doc,
static PyObject *TVertex_front_svertex_get(BPy_TVertex *self, void *UNUSED(closure)) static PyObject *TVertex_front_svertex_get(BPy_TVertex *self, void *UNUSED(closure))
{ {
SVertex *v = self->tv->frontSVertex(); SVertex *v = self->tv->frontSVertex();
if (v) if (v) {
return BPy_SVertex_from_SVertex(*v); return BPy_SVertex_from_SVertex(*v);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -155,8 +161,9 @@ PyDoc_STRVAR(TVertex_back_svertex_doc,
static PyObject *TVertex_back_svertex_get(BPy_TVertex *self, void *UNUSED(closure)) static PyObject *TVertex_back_svertex_get(BPy_TVertex *self, void *UNUSED(closure))
{ {
SVertex *v = self->tv->backSVertex(); SVertex *v = self->tv->backSVertex();
if (v) if (v) {
return BPy_SVertex_from_SVertex(*v); return BPy_SVertex_from_SVertex(*v);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@@ -74,10 +74,12 @@ static int FEdge_init(BPy_FEdge *self, PyObject *args, PyObject *kwds)
PyObject *obj1 = 0, *obj2 = 0; PyObject *obj1 = 0, *obj2 = 0;
if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &FEdge_Type, &obj1)) { if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &FEdge_Type, &obj1)) {
if (!obj1) if (!obj1) {
self->fe = new FEdge(); self->fe = new FEdge();
else }
else {
self->fe = new FEdge(*(((BPy_FEdge *)obj1)->fe)); self->fe = new FEdge(*(((BPy_FEdge *)obj1)->fe));
}
} }
else if (PyErr_Clear(), else if (PyErr_Clear(),
PyArg_ParseTupleAndKeywords(args, PyArg_ParseTupleAndKeywords(args,
@@ -108,12 +110,14 @@ static Py_ssize_t FEdge_sq_length(BPy_FEdge * /*self*/)
static PyObject *FEdge_sq_item(BPy_FEdge *self, int keynum) static PyObject *FEdge_sq_item(BPy_FEdge *self, int keynum)
{ {
if (keynum < 0) if (keynum < 0) {
keynum += FEdge_sq_length(self); keynum += FEdge_sq_length(self);
}
if (keynum == 0 || keynum == 1) { if (keynum == 0 || keynum == 1) {
SVertex *v = self->fe->operator[](keynum); SVertex *v = self->fe->operator[](keynum);
if (v) if (v) {
return BPy_SVertex_from_SVertex(*v); return BPy_SVertex_from_SVertex(*v);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
PyErr_Format(PyExc_IndexError, "FEdge[index]: index %d out of range", keynum); PyErr_Format(PyExc_IndexError, "FEdge[index]: index %d out of range", keynum);
@@ -143,8 +147,9 @@ PyDoc_STRVAR(FEdge_first_svertex_doc,
static PyObject *FEdge_first_svertex_get(BPy_FEdge *self, void *UNUSED(closure)) static PyObject *FEdge_first_svertex_get(BPy_FEdge *self, void *UNUSED(closure))
{ {
SVertex *A = self->fe->vertexA(); SVertex *A = self->fe->vertexA();
if (A) if (A) {
return BPy_SVertex_from_SVertex(*A); return BPy_SVertex_from_SVertex(*A);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -166,8 +171,9 @@ PyDoc_STRVAR(FEdge_second_svertex_doc,
static PyObject *FEdge_second_svertex_get(BPy_FEdge *self, void *UNUSED(closure)) static PyObject *FEdge_second_svertex_get(BPy_FEdge *self, void *UNUSED(closure))
{ {
SVertex *B = self->fe->vertexB(); SVertex *B = self->fe->vertexB();
if (B) if (B) {
return BPy_SVertex_from_SVertex(*B); return BPy_SVertex_from_SVertex(*B);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -190,8 +196,9 @@ PyDoc_STRVAR(FEdge_next_fedge_doc,
static PyObject *FEdge_next_fedge_get(BPy_FEdge *self, void *UNUSED(closure)) static PyObject *FEdge_next_fedge_get(BPy_FEdge *self, void *UNUSED(closure))
{ {
FEdge *fe = self->fe->nextEdge(); FEdge *fe = self->fe->nextEdge();
if (fe) if (fe) {
return Any_BPy_FEdge_from_FEdge(*fe); return Any_BPy_FEdge_from_FEdge(*fe);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -214,8 +221,9 @@ PyDoc_STRVAR(FEdge_previous_fedge_doc,
static PyObject *FEdge_previous_fedge_get(BPy_FEdge *self, void *UNUSED(closure)) static PyObject *FEdge_previous_fedge_get(BPy_FEdge *self, void *UNUSED(closure))
{ {
FEdge *fe = self->fe->previousEdge(); FEdge *fe = self->fe->previousEdge();
if (fe) if (fe) {
return Any_BPy_FEdge_from_FEdge(*fe); return Any_BPy_FEdge_from_FEdge(*fe);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -237,8 +245,9 @@ PyDoc_STRVAR(FEdge_viewedge_doc,
static PyObject *FEdge_viewedge_get(BPy_FEdge *self, void *UNUSED(closure)) static PyObject *FEdge_viewedge_get(BPy_FEdge *self, void *UNUSED(closure))
{ {
ViewEdge *ve = self->fe->viewedge(); ViewEdge *ve = self->fe->viewedge();
if (ve) if (ve) {
return BPy_ViewEdge_from_ViewEdge(*ve); return BPy_ViewEdge_from_ViewEdge(*ve);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@@ -65,10 +65,12 @@ static int FrsCurve_init(BPy_FrsCurve *self, PyObject *args, PyObject *kwds)
PyObject *obj = 0; PyObject *obj = 0;
if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &FrsCurve_Type, &obj)) { if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &FrsCurve_Type, &obj)) {
if (!obj) if (!obj) {
self->c = new Curve(); self->c = new Curve();
else }
else {
self->c = new Curve(*(((BPy_FrsCurve *)obj)->c)); self->c = new Curve(*(((BPy_FrsCurve *)obj)->c));
}
} }
else if (PyErr_Clear(), else if (PyErr_Clear(),
PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist_2, &Id_Type, &obj)) { PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist_2, &Id_Type, &obj)) {
@@ -96,8 +98,9 @@ static PyObject *FrsCurve_push_vertex_back(BPy_FrsCurve *self, PyObject *args, P
static const char *kwlist[] = {"vertex", NULL}; static const char *kwlist[] = {"vertex", NULL};
PyObject *obj = 0; PyObject *obj = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj)) {
return NULL; return NULL;
}
if (BPy_CurvePoint_Check(obj)) { if (BPy_CurvePoint_Check(obj)) {
self->c->push_vertex_back(((BPy_CurvePoint *)obj)->cp); self->c->push_vertex_back(((BPy_CurvePoint *)obj)->cp);
@@ -125,8 +128,9 @@ static PyObject *FrsCurve_push_vertex_front(BPy_FrsCurve *self, PyObject *args,
static const char *kwlist[] = {"vertex", NULL}; static const char *kwlist[] = {"vertex", NULL};
PyObject *obj = 0; PyObject *obj = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj)) {
return NULL; return NULL;
}
if (BPy_CurvePoint_Check(obj)) { if (BPy_CurvePoint_Check(obj)) {
self->c->push_vertex_front(((BPy_CurvePoint *)obj)->cp); self->c->push_vertex_front(((BPy_CurvePoint *)obj)->cp);

View File

@@ -62,12 +62,15 @@ static int Stroke_init(BPy_Stroke *self, PyObject *args, PyObject *kwds)
static const char *kwlist[] = {"brother", NULL}; static const char *kwlist[] = {"brother", NULL};
PyObject *brother = 0; PyObject *brother = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &Stroke_Type, &brother)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &Stroke_Type, &brother)) {
return -1; return -1;
if (!brother) }
if (!brother) {
self->s = new Stroke(); self->s = new Stroke();
else }
else {
self->s = new Stroke(*(((BPy_Stroke *)brother)->s)); self->s = new Stroke(*(((BPy_Stroke *)brother)->s));
}
self->py_if1D.if1D = self->s; self->py_if1D.if1D = self->s;
self->py_if1D.borrowed = false; self->py_if1D.borrowed = false;
return 0; return 0;
@@ -86,8 +89,9 @@ static Py_ssize_t Stroke_sq_length(BPy_Stroke *self)
static PyObject *Stroke_sq_item(BPy_Stroke *self, int keynum) static PyObject *Stroke_sq_item(BPy_Stroke *self, int keynum)
{ {
if (keynum < 0) if (keynum < 0) {
keynum += Stroke_sq_length(self); keynum += Stroke_sq_length(self);
}
if (keynum < 0 || keynum >= Stroke_sq_length(self)) { if (keynum < 0 || keynum >= Stroke_sq_length(self)) {
PyErr_Format(PyExc_IndexError, "Stroke[index]: index %d out of range", keynum); PyErr_Format(PyExc_IndexError, "Stroke[index]: index %d out of range", keynum);
return NULL; return NULL;
@@ -115,8 +119,9 @@ static PyObject *Stroke_compute_sampling(BPy_Stroke *self, PyObject *args, PyObj
static const char *kwlist[] = {"n", NULL}; static const char *kwlist[] = {"n", NULL};
int i; int i;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", (char **)kwlist, &i)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", (char **)kwlist, &i)) {
return NULL; return NULL;
}
return PyFloat_FromDouble(self->s->ComputeSampling(i)); return PyFloat_FromDouble(self->s->ComputeSampling(i));
} }
@@ -215,8 +220,10 @@ static PyObject *Stroke_remove_vertex(BPy_Stroke *self, PyObject *args, PyObject
static const char *kwlist[] = {"vertex", NULL}; static const char *kwlist[] = {"vertex", NULL};
PyObject *py_sv = 0; PyObject *py_sv = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist, &StrokeVertex_Type, &py_sv)) if (!PyArg_ParseTupleAndKeywords(
args, kwds, "O!", (char **)kwlist, &StrokeVertex_Type, &py_sv)) {
return NULL; return NULL;
}
if (((BPy_StrokeVertex *)py_sv)->sv) { if (((BPy_StrokeVertex *)py_sv)->sv) {
self->s->RemoveVertex(((BPy_StrokeVertex *)py_sv)->sv); self->s->RemoveVertex(((BPy_StrokeVertex *)py_sv)->sv);
} }
@@ -267,8 +274,9 @@ static PyObject *Stroke_stroke_vertices_begin(BPy_Stroke *self, PyObject *args,
static const char *kwlist[] = {"t", NULL}; static const char *kwlist[] = {"t", NULL};
float f = 0.0f; float f = 0.0f;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|f", (char **)kwlist, &f)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "|f", (char **)kwlist, &f)) {
return NULL; return NULL;
}
StrokeInternal::StrokeVertexIterator sv_it(self->s->strokeVerticesBegin(f)); StrokeInternal::StrokeVertexIterator sv_it(self->s->strokeVerticesBegin(f));
return BPy_StrokeVertexIterator_from_StrokeVertexIterator(sv_it, false); return BPy_StrokeVertexIterator_from_StrokeVertexIterator(sv_it, false);
} }
@@ -386,8 +394,9 @@ static PyObject *Stroke_texture_id_get(BPy_Stroke *self, void *UNUSED(closure))
static int Stroke_texture_id_set(BPy_Stroke *self, PyObject *value, void *UNUSED(closure)) static int Stroke_texture_id_set(BPy_Stroke *self, PyObject *value, void *UNUSED(closure))
{ {
unsigned int i = PyLong_AsUnsignedLong(value); unsigned int i = PyLong_AsUnsignedLong(value);
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return -1; return -1;
}
self->s->setTextureId(i); self->s->setTextureId(i);
return 0; return 0;
} }
@@ -404,8 +413,9 @@ static PyObject *Stroke_tips_get(BPy_Stroke *self, void *UNUSED(closure))
static int Stroke_tips_set(BPy_Stroke *self, PyObject *value, void *UNUSED(closure)) static int Stroke_tips_set(BPy_Stroke *self, PyObject *value, void *UNUSED(closure))
{ {
if (!PyBool_Check(value)) if (!PyBool_Check(value)) {
return -1; return -1;
}
self->s->setTips(bool_from_PyBool(value)); self->s->setTips(bool_from_PyBool(value));
return 0; return 0;
} }

View File

@@ -59,12 +59,15 @@ static int ViewEdge_init(BPy_ViewEdge *self, PyObject *args, PyObject *kwds)
static const char *kwlist[] = {"brother", NULL}; static const char *kwlist[] = {"brother", NULL};
PyObject *brother = 0; PyObject *brother = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &ViewEdge_Type, &brother)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &ViewEdge_Type, &brother)) {
return -1; return -1;
if (!brother) }
if (!brother) {
self->ve = new ViewEdge(); self->ve = new ViewEdge();
else }
else {
self->ve = new ViewEdge(*(((BPy_ViewEdge *)brother)->ve)); self->ve = new ViewEdge(*(((BPy_ViewEdge *)brother)->ve));
}
self->py_if1D.if1D = self->ve; self->py_if1D.if1D = self->ve;
self->py_if1D.borrowed = false; self->py_if1D.borrowed = false;
return 0; return 0;
@@ -99,8 +102,9 @@ PyDoc_STRVAR(ViewEdge_first_viewvertex_doc,
static PyObject *ViewEdge_first_viewvertex_get(BPy_ViewEdge *self, void *UNUSED(closure)) static PyObject *ViewEdge_first_viewvertex_get(BPy_ViewEdge *self, void *UNUSED(closure))
{ {
ViewVertex *v = self->ve->A(); ViewVertex *v = self->ve->A();
if (v) if (v) {
return Any_BPy_ViewVertex_from_ViewVertex(*v); return Any_BPy_ViewVertex_from_ViewVertex(*v);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -108,8 +112,9 @@ static int ViewEdge_first_viewvertex_set(BPy_ViewEdge *self,
PyObject *value, PyObject *value,
void *UNUSED(closure)) void *UNUSED(closure))
{ {
if (!BPy_ViewVertex_Check(value)) if (!BPy_ViewVertex_Check(value)) {
return -1; return -1;
}
self->ve->setA(((BPy_ViewVertex *)value)->vv); self->ve->setA(((BPy_ViewVertex *)value)->vv);
return 0; return 0;
} }
@@ -122,15 +127,17 @@ PyDoc_STRVAR(ViewEdge_last_viewvertex_doc,
static PyObject *ViewEdge_last_viewvertex_get(BPy_ViewEdge *self, void *UNUSED(closure)) static PyObject *ViewEdge_last_viewvertex_get(BPy_ViewEdge *self, void *UNUSED(closure))
{ {
ViewVertex *v = self->ve->B(); ViewVertex *v = self->ve->B();
if (v) if (v) {
return Any_BPy_ViewVertex_from_ViewVertex(*v); return Any_BPy_ViewVertex_from_ViewVertex(*v);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static int ViewEdge_last_viewvertex_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure)) static int ViewEdge_last_viewvertex_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure))
{ {
if (!BPy_ViewVertex_Check(value)) if (!BPy_ViewVertex_Check(value)) {
return -1; return -1;
}
self->ve->setB(((BPy_ViewVertex *)value)->vv); self->ve->setB(((BPy_ViewVertex *)value)->vv);
return 0; return 0;
} }
@@ -143,15 +150,17 @@ PyDoc_STRVAR(ViewEdge_first_fedge_doc,
static PyObject *ViewEdge_first_fedge_get(BPy_ViewEdge *self, void *UNUSED(closure)) static PyObject *ViewEdge_first_fedge_get(BPy_ViewEdge *self, void *UNUSED(closure))
{ {
FEdge *fe = self->ve->fedgeA(); FEdge *fe = self->ve->fedgeA();
if (fe) if (fe) {
return Any_BPy_FEdge_from_FEdge(*fe); return Any_BPy_FEdge_from_FEdge(*fe);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static int ViewEdge_first_fedge_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure)) static int ViewEdge_first_fedge_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure))
{ {
if (!BPy_FEdge_Check(value)) if (!BPy_FEdge_Check(value)) {
return -1; return -1;
}
self->ve->setFEdgeA(((BPy_FEdge *)value)->fe); self->ve->setFEdgeA(((BPy_FEdge *)value)->fe);
return 0; return 0;
} }
@@ -164,15 +173,17 @@ PyDoc_STRVAR(ViewEdge_last_fedge_doc,
static PyObject *ViewEdge_last_fedge_get(BPy_ViewEdge *self, void *UNUSED(closure)) static PyObject *ViewEdge_last_fedge_get(BPy_ViewEdge *self, void *UNUSED(closure))
{ {
FEdge *fe = self->ve->fedgeB(); FEdge *fe = self->ve->fedgeB();
if (fe) if (fe) {
return Any_BPy_FEdge_from_FEdge(*fe); return Any_BPy_FEdge_from_FEdge(*fe);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static int ViewEdge_last_fedge_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure)) static int ViewEdge_last_fedge_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure))
{ {
if (!BPy_FEdge_Check(value)) if (!BPy_FEdge_Check(value)) {
return -1; return -1;
}
self->ve->setFEdgeB(((BPy_FEdge *)value)->fe); self->ve->setFEdgeB(((BPy_FEdge *)value)->fe);
return 0; return 0;
} }
@@ -185,15 +196,17 @@ PyDoc_STRVAR(ViewEdge_viewshape_doc,
static PyObject *ViewEdge_viewshape_get(BPy_ViewEdge *self, void *UNUSED(closure)) static PyObject *ViewEdge_viewshape_get(BPy_ViewEdge *self, void *UNUSED(closure))
{ {
ViewShape *vs = self->ve->viewShape(); ViewShape *vs = self->ve->viewShape();
if (vs) if (vs) {
return BPy_ViewShape_from_ViewShape(*vs); return BPy_ViewShape_from_ViewShape(*vs);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static int ViewEdge_viewshape_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure)) static int ViewEdge_viewshape_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure))
{ {
if (!BPy_ViewShape_Check(value)) if (!BPy_ViewShape_Check(value)) {
return -1; return -1;
}
self->ve->setShape(((BPy_ViewShape *)value)->vs); self->ve->setShape(((BPy_ViewShape *)value)->vs);
return 0; return 0;
} }
@@ -207,15 +220,17 @@ PyDoc_STRVAR(ViewEdge_occludee_doc,
static PyObject *ViewEdge_occludee_get(BPy_ViewEdge *self, void *UNUSED(closure)) static PyObject *ViewEdge_occludee_get(BPy_ViewEdge *self, void *UNUSED(closure))
{ {
ViewShape *vs = self->ve->aShape(); ViewShape *vs = self->ve->aShape();
if (vs) if (vs) {
return BPy_ViewShape_from_ViewShape(*vs); return BPy_ViewShape_from_ViewShape(*vs);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static int ViewEdge_occludee_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure)) static int ViewEdge_occludee_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(closure))
{ {
if (!BPy_ViewShape_Check(value)) if (!BPy_ViewShape_Check(value)) {
return -1; return -1;
}
self->ve->setaShape(((BPy_ViewShape *)value)->vs); self->ve->setaShape(((BPy_ViewShape *)value)->vs);
return 0; return 0;
} }
@@ -285,8 +300,9 @@ static int ViewEdge_qi_set(BPy_ViewEdge *self, PyObject *value, void *UNUSED(clo
{ {
int qi; int qi;
if ((qi = PyLong_AsLong(value)) == -1 && PyErr_Occurred()) if ((qi = PyLong_AsLong(value)) == -1 && PyErr_Occurred()) {
return -1; return -1;
}
self->ve->setQI(qi); self->ve->setQI(qi);
return 0; return 0;
} }
@@ -307,8 +323,9 @@ static int ViewEdge_chaining_time_stamp_set(BPy_ViewEdge *self,
{ {
int timestamp; int timestamp;
if ((timestamp = PyLong_AsLong(value)) == -1 && PyErr_Occurred()) if ((timestamp = PyLong_AsLong(value)) == -1 && PyErr_Occurred()) {
return -1; return -1;
}
self->ve->setChainingTimeStamp(timestamp); self->ve->setChainingTimeStamp(timestamp);
return 0; return 0;
} }

View File

@@ -64,10 +64,12 @@ static int Chain_init(BPy_Chain *self, PyObject *args, PyObject *kwds)
PyObject *obj = 0; PyObject *obj = 0;
if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &Chain_Type, &obj)) { if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &Chain_Type, &obj)) {
if (!obj) if (!obj) {
self->c = new Chain(); self->c = new Chain();
else }
else {
self->c = new Chain(*(((BPy_Chain *)obj)->c)); self->c = new Chain(*(((BPy_Chain *)obj)->c));
}
} }
else if (PyErr_Clear(), else if (PyErr_Clear(),
PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist_2, &Id_Type, &obj)) { PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist_2, &Id_Type, &obj)) {

View File

@@ -68,10 +68,12 @@ static int FEdgeSharp_init(BPy_FEdgeSharp *self, PyObject *args, PyObject *kwds)
PyObject *obj1 = 0, *obj2 = 0; PyObject *obj1 = 0, *obj2 = 0;
if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &FEdgeSharp_Type, &obj1)) { if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &FEdgeSharp_Type, &obj1)) {
if (!obj1) if (!obj1) {
self->fes = new FEdgeSharp(); self->fes = new FEdgeSharp();
else }
else {
self->fes = new FEdgeSharp(*(((BPy_FEdgeSharp *)obj1)->fes)); self->fes = new FEdgeSharp(*(((BPy_FEdgeSharp *)obj1)->fes));
}
} }
else if (PyErr_Clear(), else if (PyErr_Clear(),
PyArg_ParseTupleAndKeywords(args, PyArg_ParseTupleAndKeywords(args,
@@ -102,8 +104,9 @@ static int FEdgeSharp_init(BPy_FEdgeSharp *self, PyObject *args, PyObject *kwds)
static int FEdgeSharp_mathutils_check(BaseMathObject *bmo) static int FEdgeSharp_mathutils_check(BaseMathObject *bmo)
{ {
if (!BPy_FEdgeSharp_Check(bmo->cb_user)) if (!BPy_FEdgeSharp_Check(bmo->cb_user)) {
return -1; return -1;
}
return 0; return 0;
} }
@@ -266,8 +269,9 @@ static int FEdgeSharp_material_index_right_set(BPy_FEdgeSharp *self,
void *UNUSED(closure)) void *UNUSED(closure))
{ {
unsigned int i = PyLong_AsUnsignedLong(value); unsigned int i = PyLong_AsUnsignedLong(value);
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return -1; return -1;
}
self->fes->setaFrsMaterialIndex(i); self->fes->setaFrsMaterialIndex(i);
return 0; return 0;
} }
@@ -287,8 +291,9 @@ static int FEdgeSharp_material_index_left_set(BPy_FEdgeSharp *self,
void *UNUSED(closure)) void *UNUSED(closure))
{ {
unsigned int i = PyLong_AsUnsignedLong(value); unsigned int i = PyLong_AsUnsignedLong(value);
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return -1; return -1;
}
self->fes->setbFrsMaterialIndex(i); self->fes->setbFrsMaterialIndex(i);
return 0; return 0;
} }
@@ -330,8 +335,9 @@ static int FEdgeSharp_face_mark_right_set(BPy_FEdgeSharp *self,
PyObject *value, PyObject *value,
void *UNUSED(closure)) void *UNUSED(closure))
{ {
if (!PyBool_Check(value)) if (!PyBool_Check(value)) {
return -1; return -1;
}
self->fes->setaFaceMark(bool_from_PyBool(value)); self->fes->setaFaceMark(bool_from_PyBool(value));
return 0; return 0;
} }
@@ -350,8 +356,9 @@ static int FEdgeSharp_face_mark_left_set(BPy_FEdgeSharp *self,
PyObject *value, PyObject *value,
void *UNUSED(closure)) void *UNUSED(closure))
{ {
if (!PyBool_Check(value)) if (!PyBool_Check(value)) {
return -1; return -1;
}
self->fes->setbFaceMark(bool_from_PyBool(value)); self->fes->setbFaceMark(bool_from_PyBool(value));
return 0; return 0;
} }

View File

@@ -66,10 +66,12 @@ static int FEdgeSmooth_init(BPy_FEdgeSmooth *self, PyObject *args, PyObject *kwd
if (PyArg_ParseTupleAndKeywords( if (PyArg_ParseTupleAndKeywords(
args, kwds, "|O!", (char **)kwlist_1, &FEdgeSmooth_Type, &obj1)) { args, kwds, "|O!", (char **)kwlist_1, &FEdgeSmooth_Type, &obj1)) {
if (!obj1) if (!obj1) {
self->fes = new FEdgeSmooth(); self->fes = new FEdgeSmooth();
else }
else {
self->fes = new FEdgeSmooth(*(((BPy_FEdgeSmooth *)obj1)->fes)); self->fes = new FEdgeSmooth(*(((BPy_FEdgeSmooth *)obj1)->fes));
}
} }
else if (PyErr_Clear(), else if (PyErr_Clear(),
PyArg_ParseTupleAndKeywords(args, PyArg_ParseTupleAndKeywords(args,
@@ -96,8 +98,9 @@ static int FEdgeSmooth_init(BPy_FEdgeSmooth *self, PyObject *args, PyObject *kwd
static int FEdgeSmooth_mathutils_check(BaseMathObject *bmo) static int FEdgeSmooth_mathutils_check(BaseMathObject *bmo)
{ {
if (!BPy_FEdgeSmooth_Check(bmo->cb_user)) if (!BPy_FEdgeSmooth_Check(bmo->cb_user)) {
return -1; return -1;
}
return 0; return 0;
} }
@@ -189,8 +192,9 @@ static int FEdgeSmooth_material_index_set(BPy_FEdgeSmooth *self,
void *UNUSED(closure)) void *UNUSED(closure))
{ {
unsigned int i = PyLong_AsUnsignedLong(value); unsigned int i = PyLong_AsUnsignedLong(value);
if (PyErr_Occurred()) if (PyErr_Occurred()) {
return -1; return -1;
}
self->fes->setFrsMaterialIndex(i); self->fes->setFrsMaterialIndex(i);
return 0; return 0;
} }
@@ -217,8 +221,9 @@ static PyObject *FEdgeSmooth_face_mark_get(BPy_FEdgeSmooth *self, void *UNUSED(c
static int FEdgeSmooth_face_mark_set(BPy_FEdgeSmooth *self, PyObject *value, void *UNUSED(closure)) static int FEdgeSmooth_face_mark_set(BPy_FEdgeSmooth *self, PyObject *value, void *UNUSED(closure))
{ {
if (!PyBool_Check(value)) if (!PyBool_Check(value)) {
return -1; return -1;
}
self->fes->setFaceMark(bool_from_PyBool(value)); self->fes->setFaceMark(bool_from_PyBool(value));
return 0; return 0;
} }

View File

@@ -121,8 +121,9 @@ static PyObject *AdjacencyIterator_iternext(BPy_AdjacencyIterator *self)
PyErr_SetNone(PyExc_StopIteration); PyErr_SetNone(PyExc_StopIteration);
return NULL; return NULL;
} }
if (self->at_start) if (self->at_start) {
self->at_start = false; self->at_start = false;
}
else { else {
self->a_it->increment(); self->a_it->increment();
if (self->a_it->isEnd()) { if (self->a_it->isEnd()) {
@@ -148,8 +149,9 @@ static PyObject *AdjacencyIterator_object_get(BPy_AdjacencyIterator *self, void
return NULL; return NULL;
} }
ViewEdge *ve = self->a_it->operator*(); ViewEdge *ve = self->a_it->operator*();
if (ve) if (ve) {
return BPy_ViewEdge_from_ViewEdge(*ve); return BPy_ViewEdge_from_ViewEdge(*ve);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@@ -85,8 +85,9 @@ PyDoc_STRVAR(ChainPredicateIterator_doc,
static int check_begin(PyObject *obj, void *v) static int check_begin(PyObject *obj, void *v)
{ {
if (obj != NULL && obj != Py_None && !BPy_ViewEdge_Check(obj)) if (obj != NULL && obj != Py_None && !BPy_ViewEdge_Check(obj)) {
return 0; return 0;
}
*((PyObject **)v) = obj; *((PyObject **)v) = obj;
return 1; return 1;
} }

View File

@@ -72,8 +72,9 @@ PyDoc_STRVAR(ChainSilhouetteIterator_doc,
static int check_begin(PyObject *obj, void *v) static int check_begin(PyObject *obj, void *v)
{ {
if (obj != NULL && obj != Py_None && !BPy_ViewEdge_Check(obj)) if (obj != NULL && obj != Py_None && !BPy_ViewEdge_Check(obj)) {
return 0; return 0;
}
*((PyObject **)v) = obj; *((PyObject **)v) = obj;
return 1; return 1;
} }

View File

@@ -73,8 +73,9 @@ PyDoc_STRVAR(
static int check_begin(PyObject *obj, void *v) static int check_begin(PyObject *obj, void *v)
{ {
if (obj != NULL && obj != Py_None && !BPy_ViewEdge_Check(obj)) if (obj != NULL && obj != Py_None && !BPy_ViewEdge_Check(obj)) {
return 0; return 0;
}
*((PyObject **)v) = obj; *((PyObject **)v) = obj;
return 1; return 1;
} }
@@ -166,10 +167,12 @@ static PyObject *ChainingIterator_traverse(BPy_ChainingIterator *self,
return NULL; return NULL;
} }
if (!PyArg_ParseTupleAndKeywords( if (!PyArg_ParseTupleAndKeywords(
args, kwds, "O!", (char **)kwlist, &AdjacencyIterator_Type, &py_a_it)) args, kwds, "O!", (char **)kwlist, &AdjacencyIterator_Type, &py_a_it)) {
return NULL; return NULL;
if (((BPy_AdjacencyIterator *)py_a_it)->a_it) }
if (((BPy_AdjacencyIterator *)py_a_it)->a_it) {
self->c_it->traverse(*(((BPy_AdjacencyIterator *)py_a_it)->a_it)); self->c_it->traverse(*(((BPy_AdjacencyIterator *)py_a_it)->a_it));
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -196,8 +199,9 @@ static PyObject *ChainingIterator_object_get(BPy_ChainingIterator *self, void *U
return NULL; return NULL;
} }
ViewEdge *ve = self->c_it->operator*(); ViewEdge *ve = self->c_it->operator*();
if (ve) if (ve) {
return BPy_ViewEdge_from_ViewEdge(*ve); return BPy_ViewEdge_from_ViewEdge(*ve);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@@ -211,8 +215,9 @@ static PyObject *ChainingIterator_next_vertex_get(BPy_ChainingIterator *self,
void *UNUSED(closure)) void *UNUSED(closure))
{ {
ViewVertex *v = self->c_it->getVertex(); ViewVertex *v = self->c_it->getVertex();
if (v) if (v) {
return Any_BPy_ViewVertex_from_ViewVertex(*v); return Any_BPy_ViewVertex_from_ViewVertex(*v);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@@ -67,11 +67,13 @@ static int CurvePointIterator_init(BPy_CurvePointIterator *self, PyObject *args,
if (PyArg_ParseTupleAndKeywords( if (PyArg_ParseTupleAndKeywords(
args, kwds, "|O!", (char **)kwlist_1, &CurvePointIterator_Type, &brother)) { args, kwds, "|O!", (char **)kwlist_1, &CurvePointIterator_Type, &brother)) {
if (!brother) if (!brother) {
self->cp_it = new CurveInternal::CurvePointIterator(); self->cp_it = new CurveInternal::CurvePointIterator();
else }
else {
self->cp_it = new CurveInternal::CurvePointIterator( self->cp_it = new CurveInternal::CurvePointIterator(
*(((BPy_CurvePointIterator *)brother)->cp_it)); *(((BPy_CurvePointIterator *)brother)->cp_it));
}
} }
else if (PyErr_Clear(), PyArg_ParseTupleAndKeywords(args, kwds, "f", (char **)kwlist_2, &step)) { else if (PyErr_Clear(), PyArg_ParseTupleAndKeywords(args, kwds, "f", (char **)kwlist_2, &step)) {
self->cp_it = new CurveInternal::CurvePointIterator(step); self->cp_it = new CurveInternal::CurvePointIterator(step);

Some files were not shown because too many files have changed in this diff Show More