| 75 | } |
| 76 | |
| 77 | uint32_t SetDisplayProfiles(HDisplayProfiles profiles, DisplayProfilesParams& params) |
| 78 | { |
| 79 | profiles->m_NameHash = params.m_NameHash; |
| 80 | if(params.m_DisplayProfilesDDF == 0x0) |
| 81 | { |
| 82 | profiles->m_Profiles.SetCapacity(0); |
| 83 | profiles->m_Qualifiers.SetCapacity(0); |
| 84 | return 0; |
| 85 | } |
| 86 | |
| 87 | dmRenderDDF::DisplayProfiles& ddf = *params.m_DisplayProfilesDDF; |
| 88 | profiles->m_AutoLayoutSelection = ddf.m_AutoLayoutSelection; |
| 89 | uint32_t profile_count = 0; |
| 90 | uint32_t qualifier_count = 0; |
| 91 | for(uint32_t i = 0; i < ddf.m_Profiles.m_Count; ++i) |
| 92 | { |
| 93 | qualifier_count += ddf.m_Profiles[i].m_Qualifiers.m_Count; |
| 94 | ++profile_count; |
| 95 | } |
| 96 | if(profile_count == 0) |
| 97 | return 0; |
| 98 | profiles->m_Profiles.SetCapacity(profile_count); |
| 99 | profiles->m_Profiles.SetSize(profile_count); |
| 100 | profiles->m_Qualifiers.SetCapacity(qualifier_count); |
| 101 | profiles->m_Qualifiers.SetSize(qualifier_count); |
| 102 | |
| 103 | DisplayProfiles::Qualifier* qualifier = &profiles->m_Qualifiers[0]; |
| 104 | for(uint32_t i = 0; i < profile_count; ++i) |
| 105 | { |
| 106 | DisplayProfiles::Profile& profile = profiles->m_Profiles[i]; |
| 107 | profile.m_Id = dmHashString64(ddf.m_Profiles[i].m_Name); |
| 108 | profile.m_QualifierCount = qualifier_count = ddf.m_Profiles[i].m_Qualifiers.m_Count; |
| 109 | profile.m_Qualifiers = qualifier; |
| 110 | for(uint32_t q = 0; q < qualifier_count; ++q) |
| 111 | { |
| 112 | dmRenderDDF::DisplayProfileQualifier& sq = ddf.m_Profiles[i].m_Qualifiers.m_Data[q]; |
| 113 | qualifier->m_Width = (float) sq.m_Width; |
| 114 | qualifier->m_Height = (float) sq.m_Height; |
| 115 | qualifier->m_Dpi = 0.0f; |
| 116 | |
| 117 | uint32_t device_models_count = sq.m_DeviceModels.m_Count; |
| 118 | qualifier->m_NumDeviceModels = device_models_count; |
| 119 | qualifier->m_DeviceModels = new char*[device_models_count]; |
| 120 | for (uint32_t d = 0; d < device_models_count; ++d) |
| 121 | { |
| 122 | qualifier->m_DeviceModels[d] = strdup(sq.m_DeviceModels.m_Data[d]); |
| 123 | } |
| 124 | ++qualifier; |
| 125 | } |
| 126 | } |
| 127 | return profile_count; |
| 128 | } |
| 129 | |
| 130 | static int IsPortrait(uint32_t width, uint32_t height) |
| 131 | { |