private void readLayer(long layers, String name) { if (layers == 0) { return; } // Console.WriteLine(name + ".layers=" + Long.toString(layers, 16)); BlendChunk raw = findChunkByPtr(layers); if (raw == null) { throw new Exception("GL_BLEND:Unable to find " + name + ".layers for Mesh"); } setData(raw.raw); // Console.WriteLine("#layers=" + raw.nr); for (int a = 0; a < raw.nr; a++) { BlendCustomDataLayer layer = new BlendCustomDataLayer(this); layer.read(); String layer_name = layer.name; if (layer.data == 0) { // Console.WriteLine("layer.data == null"); continue; } BlendChunk layer_data = findChunkByPtr(layer.data); if (layer_data == null) { throw new Exception("GL_BLEND:Unable to find " + name + ".layers.data for Mesh"); } BlendContext ctx = pushData(); setData(layer_data.raw); // Console.WriteLine("layer.data=" + Long.toString(layer.data, 16) + ",type==" + layer.type + ",a=" + a); switch (layer.type) { case CD_MTEXPOLY: { //15 //NOTE:There fis a MTexPoly per face, I only read the first BlendMTexPoly tex = new BlendMTexPoly(this); tex.read(); BlendChunk imageChunk = findChunkByPtr(tex.tpage); if (imageChunk == null) { throw new Exception("GL_BLEND:No texture found for UVMap:" + a); } setData(imageChunk.raw); BlendImage image = new BlendImage(this); image.read(); OpenGLUVMap map; if (a < obj.GetUVMapCount()) { map = obj.GetUVMap(a); } else { map = obj.CreateUVMap(); } String tn = image.name; //string texture path for now int tnidx = tn.LastIndexOf('/'); if (tnidx != -1) { tn = tn.Substring(tnidx + 1); } tnidx = tn.LastIndexOf('\\'); if (tnidx != -1) { tn = tn.Substring(tnidx + 1); } int tidx = model.AddTexture(tn); map.SetTextureIndex(tidx); map.SetName(layer_name); // Console.WriteLine("texpoly=" + map.name); break; } case CD_MLOOPUV: { //16 //There fis a UV per face per vertex if (a >= obj.GetUVMapCount()) { obj.CreateUVMap(); } // Console.WriteLine("loopuv.nr=" + layer_data.nr); for (int b = 0; b < layer_data.nr; b++) { BlendMLoopUV uv = new BlendMLoopUV(this); uv.read(); uv.uv[1] = 1.0f - uv.uv[1]; //invert V(y) obj.AddUV(uv.uv, a); } break; } } popData(ctx); } }
/// <summary> /// To initialize the custom view cell /// </summary> void InitializeComponent() { var layout = new RelativeLayout { WidthRequest = 360, HeightRequest = 219, HorizontalOptions = LayoutOptions.Start, }; layout.Children.Add( new Image { Source = "apps_list_item_bg.png", Aspect = Aspect.Fill, }, Constraint.RelativeToParent((parent) => { return(0); }), Constraint.RelativeToParent((parent) => { return(0); }), Constraint.RelativeToParent((parent) => { return(parent.Width); }), Constraint.RelativeToParent((parent) => { return(parent.Height); })); var icon = new BlendImage { }; icon.SetBinding(BlendImage.SourceProperty, "IconPath"); icon.SetBinding(BlendImage.BlendColorProperty, "BlendColor"); layout.Children.Add( icon, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.0778); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.2740); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.2772); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.4475); })); var label = new Label { VerticalOptions = LayoutOptions.CenterAndExpand, }; label.SetBinding(Label.TextProperty, "Id"); layout.Children.Add( label, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.425); }), Constraint.RelativeToParent((parent) => { return(0); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.5); }), Constraint.RelativeToParent((parent) => { return(parent.Height); })); View = layout; }
/// <summary> /// To initialize components of the operation item /// </summary> void InitializeComponent() { _caption = new Label { Text = _name, HorizontalTextAlignment = TextAlignment.Center, }; _radio = new BlendImage { Source = "radio.png", BlendColor = Color.FromRgb(231, 214, 25), }; _radioCheck = new BlendImage { Source = "radio_check.png", BlendColor = Color.FromRgb(231, 214, 25), Scale = 0, }; _radioButton = new RadioButton { HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.StartAndExpand, GroupName = "Group-Operation", IsSelected = false, }; _radioButton.Selected += (s, e) => { if (e.Value == false) { UpdateUncheckedRadio(); return; } UpdateCheckedRadio(); Selected?.Invoke(this, EventArgs.Empty); }; Children.Add( _caption, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.125); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.4612); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.750); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.4931); })); Children.Add( _radio, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.4); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.1507); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.2); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.2192); })); Children.Add( _radioCheck, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.4292); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.1826); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.1416); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.1553); })); Children.Add( _radioButton, Constraint.RelativeToParent((parent) => { return(0); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.1507); }), Constraint.RelativeToParent((parent) => { return(parent.Width); }), Constraint.RelativeToParent((parent) => { return(parent.Height); })); }