[Bf-blender-cvs] [342cc12] asset-engine: Merge branch 'master' into asset-engine
Bastien Montagne
noreply at git.blender.org
Mon Dec 12 16:32:26 CET 2016
Commit: 342cc1212f95c59ca4e0dbc127c2cd68a1379e49
Author: Bastien Montagne
Date: Mon Dec 12 16:32:11 2016 +0100
Branches: asset-engine
https://developer.blender.org/rB342cc1212f95c59ca4e0dbc127c2cd68a1379e49
Merge branch 'master' into asset-engine
Conflicts:
source/blender/blenkernel/intern/library.c
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/library_remap.c
index 223780f,4f1f6d9..cfa719e
--- a/source/blender/blenkernel/intern/library_remap.c
+++ b/source/blender/blenkernel/intern/library_remap.c
@@@ -680,6 -680,35 +680,35 @@@ void BKE_libblock_relink_ex
}
}
+ static int id_relink_to_newid_looper(void *UNUSED(user_data), ID *UNUSED(self_id), ID **id_pointer, const int cd_flag)
+ {
+ ID *id = *id_pointer;
+ if (id) {
+ /* See: NEW_ID macro */
+ if (id->newid) {
+ BKE_library_update_ID_link_user(id->newid, id, cd_flag);
+ *id_pointer = id->newid;
+ }
+ else if (id->tag & LIB_TAG_NEW) {
+ id->tag &= ~LIB_TAG_NEW;
+ BKE_libblock_relink_to_newid(id);
+ }
+ }
+ return IDWALK_RET_NOP;
+ }
+
+ /** Similar to libblock_relink_ex, but is remapping IDs to their newid value if non-NULL, in given \a id.
+ *
+ * Very specific usage, not sure we'll keep it on the long run, currently only used in Object duplication code...
+ */
+ void BKE_libblock_relink_to_newid(ID *id)
+ {
- if (ID_IS_LINKED_DATABLOCK(id))
++ if (ID_IS_LINKED(id))
+ return;
+
+ BKE_library_foreach_ID_link(id, id_relink_to_newid_looper, NULL, 0);
+ }
+
void BKE_libblock_free_data(Main *UNUSED(bmain), ID *id)
{
if (id->properties) {
diff --cc source/blender/makesrna/intern/rna_asset.c
index 812b435,0000000..876d3af
mode 100644,000000..100644
--- a/source/blender/makesrna/intern/rna_asset.c
+++ b/source/blender/makesrna/intern/rna_asset.c
@@@ -1,1415 -1,0 +1,1415 @@@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Blender Foundation (2015)
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/makesrna/intern/rna_asset.c
+ * \ingroup RNA
+ */
+
+#include "BLI_utildefines.h"
+#include "BLI_fileops_types.h"
+#include "BLI_path_util.h"
+
+#include "DNA_space_types.h"
+
+#include "RNA_define.h"
+#include "RNA_enum_types.h"
+
+#include "rna_internal.h"
+
+#include "BKE_asset_engine.h"
+#include "BKE_idprop.h"
+
+#include "WM_types.h"
+
+#ifdef RNA_RUNTIME
+
+#include "MEM_guardedalloc.h"
+
+#include "RNA_access.h"
+
+#include "BKE_context.h"
+#include "BKE_report.h"
+
+
+/* AssetUUID */
+
+static void rna_AssetUUID_preview_size_get(PointerRNA *ptr, int *values)
+{
+ AssetUUID *uuid = ptr->data;
+
+ values[0] = uuid->width;
+ values[1] = uuid->height;
+}
+
+static void rna_AssetUUID_preview_size_set(PointerRNA *ptr, const int *values)
+{
+ AssetUUID *uuid = ptr->data;
+
+ uuid->width = values[0];
+ uuid->height = values[1];
+
+ MEM_SAFE_FREE(uuid->ibuff);
+}
+
+
+static int rna_AssetUUID_preview_pixels_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
+{
+ AssetUUID *uuid = ptr->data;
+
+ length[0] = (uuid->ibuff == NULL) ? 0 : uuid->width * uuid->height;
+
+ return length[0];
+}
+
+static void rna_AssetUUID_preview_pixels_get(PointerRNA *ptr, int *values)
+{
+ AssetUUID *uuid = ptr->data;
+
+ memcpy(values, uuid->ibuff, uuid->width * uuid->height * sizeof(unsigned int));
+}
+
+static void rna_AssetUUID_preview_pixels_set(PointerRNA *ptr, const int *values)
+{
+ AssetUUID *uuid = ptr->data;
+
+ if (!uuid->ibuff) {
+ uuid->ibuff = MEM_mallocN(sizeof(*uuid->ibuff) * 4 * uuid->width * uuid->height, __func__);
+ }
+
+ memcpy(uuid->ibuff, values, uuid->width * uuid->height * sizeof(unsigned int));
+}
+
+
+/* Asset listing... */
+
+/* Revisions. */
+static int rna_AssetRevision_size_get(PointerRNA *ptr)
+{
+ FileDirEntryRevision *revision = ptr->data;
+ return (int)revision->size;
+}
+
+static void rna_AssetRevision_size_set(PointerRNA *ptr, const int val)
+{
+ FileDirEntryRevision *revision = ptr->data;
+ revision->size = (int64_t)val;
+}
+
+static int rna_AssetRevision_timestamp_get(PointerRNA *ptr)
+{
+ FileDirEntryRevision *revision = ptr->data;
+ return (int)revision->time;
+}
+
+static void rna_AssetRevision_timestamp_set(PointerRNA *ptr, const int val)
+{
+ FileDirEntryRevision *revision = ptr->data;
+ revision->time = (int64_t)val;
+}
+
+/* Variants. */
+static FileDirEntryRevision *rna_AssetVariant_revisions_add(FileDirEntryVariant *variant/*, ReportList *reports,*/)
+{
+ FileDirEntryRevision *revision = MEM_callocN(sizeof(*revision), __func__);
+
+ BLI_addtail(&variant->revisions, revision);
+ variant->nbr_revisions++;
+
+ return revision;
+}
+
+static PointerRNA rna_AssetVariant_active_revision_get(PointerRNA *ptr)
+{
+ FileDirEntryVariant *variant = ptr->data;
+ return rna_pointer_inherit_refine(ptr, &RNA_AssetRevision, BLI_findlink(&variant->revisions, variant->act_revision));
+}
+
+static void rna_AssetVariant_active_revision_set(PointerRNA *ptr, PointerRNA value)
+{
+ FileDirEntryVariant *variant = ptr->data;
+ FileDirEntryRevision *revision = value.data;
+
+ variant->act_revision = BLI_findindex(&variant->revisions, revision);
+}
+
+static void rna_AssetVariant_name_get(struct PointerRNA *ptr, char *value)
+{
+ FileDirEntryVariant *variant = ptr->data;
+ if (variant->name) {
+ strcpy(value, variant->name);
+ }
+ else {
+ *value = '\0';
+ }
+}
+
+static int rna_AssetVariant_name_length(struct PointerRNA *ptr)
+{
+ FileDirEntryVariant *variant = ptr->data;
+ return variant->name ? strlen(variant->name) : 0;
+}
+
+static void rna_AssetVariant_name_set(struct PointerRNA *ptr, const char *value)
+{
+ FileDirEntryVariant *variant = ptr->data;
+ MEM_SAFE_FREE(variant->name);
+ if (value[0] != '\0') {
+ variant->name = BLI_strdup(value);
+ }
+}
+
+static void rna_AssetVariant_description_get(struct PointerRNA *ptr, char *value)
+{
+ FileDirEntryVariant *variant = ptr->data;
+ if (variant->description) {
+ strcpy(value, variant->description);
+ }
+ else {
+ *value = '\0';
+ }
+}
+
+static int rna_AssetVariant_description_length(struct PointerRNA *ptr)
+{
+ FileDirEntryVariant *variant = ptr->data;
+ return variant->description ? strlen(variant->description) : 0;
+}
+
+static void rna_AssetVariant_description_set(struct PointerRNA *ptr, const char *value)
+{
+ FileDirEntryVariant *variant = ptr->data;
+ MEM_SAFE_FREE(variant->description);
+ if (value[0] != '\0') {
+ variant->description = BLI_strdup(value);
+ }
+}
+
+/* Entries. */
+static PointerRNA rna_AssetEntry_active_variant_get(PointerRNA *ptr)
+{
+ FileDirEntry *entry = ptr->data;
+ return rna_pointer_inherit_refine(ptr, &RNA_AssetVariant, BLI_findlink(&entry->variants, entry->act_variant));
+}
+
+static void rna_AssetEntry_active_variant_set(PointerRNA *ptr, PointerRNA value)
+{
+ FileDirEntry *entry = ptr->data;
+ FileDirEntryVariant *variant = value.data;
+
+ entry->act_variant = BLI_findindex(&entry->variants, variant);
+}
+
+static FileDirEntryVariant *rna_AssetEntry_variants_add(FileDirEntry *entry/*, ReportList *reports,*/)
+{
+ FileDirEntryVariant *variant = MEM_callocN(sizeof(*variant), __func__);
+
+ BLI_addtail(&entry->variants, variant);
+ entry->nbr_variants++;
+
+ return variant;
+}
+
+static void rna_AssetEntry_relpath_get(struct PointerRNA *ptr, char *value)
+{
+ FileDirEntry *entry = ptr->data;
+ if (entry->relpath) {
+ strcpy(value, entry->relpath);
+ }
+ else {
+ *value = '\0';
+ }
+}
+
+static int rna_AssetEntry_relpath_length(struct PointerRNA *ptr)
+{
+ FileDirEntry *entry = ptr->data;
+ return entry->relpath ? strlen(entry->relpath) : 0;
+}
+
+static void rna_AssetEntry_relpath_set(struct PointerRNA *ptr, const char *value)
+{
+ FileDirEntry *entry = ptr->data;
+ if (entry->relpath) {
+ MEM_freeN(entry->relpath);
+ }
+ entry->relpath = BLI_strdup(value);
+}
+
+static void rna_AssetEntry_name_get(struct PointerRNA *ptr, char *value)
+{
+ FileDirEntry *entry = ptr->data;
+ if (entry->name) {
+ strcpy(value, entry->name);
+ }
+ else {
+ *value = '\0';
+ }
+}
+
+static int rna_AssetEntry_name_length(struct PointerRNA *ptr)
+{
+ FileDirEntry *entry = ptr->data;
+ return entry->name ? strlen(entry->name) : 0;
+}
+
+static void rna_AssetEntry_name_set(struct PointerRNA *ptr, const char *value)
+{
+ FileDirEntry *entry = ptr->data;
+ MEM_SAFE_FREE(entry->name);
+ if (value[0] != '\0') {
+ entry->name = BLI_strdup(value);
+ }
+}
+
+static void rna_AssetEntry_description_get(struct PointerRNA *ptr, char *value)
+{
+ FileDirEntry *entry = ptr->data;
+ if (entry->description) {
+ strcpy(value, entry->description);
+ }
+ else {
+ *value = '\0';
+ }
+}
+
+static int rna_AssetEntry_description_length(struct PointerRNA *ptr)
+{
+ FileDirEntry *entry = ptr->data;
+ return entry->description ? strlen(entry->description) : 0;
+}
+
+static void rna_AssetEntry_description_set(struct PointerRNA *ptr, const char *value)
+{
+ FileDirEntry *entry = ptr->data;
+ MEM_SAFE_FREE(entry->description);
+ if (value[0] != '\0') {
+ entry->description = BLI_strdup(value);
+ }
+}
+
+/* Entries Array. */
+static PointerRNA rna_AssetList_active_entry_get(PointerRNA *ptr)
+{
+ FileDirEntryArr *arr = ptr->data;
+ return rna_pointer_inherit_refine(ptr, &RNA_AssetEntry, arr->entries.first /* BLI_findlink(&arr->entries, 0) */);
+}
+
+static void rna_AssetList_active_entry_set(PointerRNA *ptr, PointerRNA value)
+{
+ FileDirEntryArr *arr = ptr->data;
+ FileDirEntry *entry = value.data;
+
+ BLI_remlink_safe(&arr->entries, entry);
+ BLI_addhead(&arr->entries, entry);
+}
+
+static int rna_AssetList_active_entry
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list