Esempio n. 1
0
        public UnitsInfo(Emgu.CV.Ocl.PlatformInfo info, int index)
        {
            Index         = index;
            DeviceCount   = info.DeviceNumber;
            Name          = info.Name;
            Vendor        = info.Vendor;
            OpenCLVersion = info.Version;

            DeviceList = new List <Device>();
            for (int i = 0; i < info.DeviceNumber; i++)
            {
                DeviceList.Add(new Device(info.GetDevice(i), i));
            }
        }
Esempio n. 2
0
        protected override View OnCreateDialogView()
        {
            LayoutInflater inflator = LayoutInflater.FromContext(this.Context);
            View           dialog   = inflator.Inflate(Resource.Layout.opencl_preference, null);

            _openCLRadioGroup = dialog.FindViewById <RadioGroup>(Resource.Id.opencl_preference_radio_group);

            AppPreference preference = new AppPreference();

            RadioButton checkedButton = null;
            RadioButton cpuButton     = new RadioButton(this.Context);

            cpuButton.Text = "CPU (no OpenCL)";

            _openCLRadioGroup.AddView(cpuButton);
            //int selectedIdx = -1;
            if (preference.UseOpenCL == false)
            {
                checkedButton = cpuButton;
            }
            cpuButton.Click += (sender, args) =>
            {
                preference.UseOpenCL = false;
                //Toast.MakeText(this.Context, "cpu clicked", ToastLength.Short).Show();
            };


            String selectedDeviceName = preference.OpenClDeviceName;

            if (selectedDeviceName == null && CvInvoke.HaveOpenCL && preference.UseOpenCL)
            {
                selectedDeviceName = Emgu.CV.Ocl.Device.Default.Name;
            }

            if (CvInvoke.HaveOpenCL)
            {
                using (VectorOfOclPlatformInfo oclPlatformInfos = Emgu.CV.Ocl.OclInvoke.GetPlatformsInfo())
                {
                    if (oclPlatformInfos.Size > 0)
                    {
                        for (int i = 0; i < oclPlatformInfos.Size; i++)
                        {
                            Emgu.CV.Ocl.PlatformInfo platformInfo = oclPlatformInfos[i];

                            for (int j = 0; j < platformInfo.DeviceNumber; j++)
                            {
                                Emgu.CV.Ocl.Device device       = platformInfo.GetDevice(j);
                                RadioButton        deviceButton = new RadioButton(this.Context);
                                deviceButton.Text = "OpenCL: " + device.Name;

                                if (preference.UseOpenCL == true && device.Name.Equals(selectedDeviceName))
                                {
                                    checkedButton = deviceButton;
                                }
                                _openCLRadioGroup.AddView(deviceButton);

                                //counter++;
                                deviceButton.Click += (sender, args) =>
                                {
                                    preference.UseOpenCL        = true;
                                    preference.OpenClDeviceName = device.Name;
                                    //Toast.MakeText(this.Context, device.Name + " clicked", ToastLength.Short).Show();
                                };
                            }
                        }
                    }
                }
            }
            if (checkedButton != null)
            {
                _openCLRadioGroup.Check(checkedButton.Id);
            }
            //_openCLRadioGroup.in

            /*
             * _openCLToggleButton.Checked = preference.UseOpenCL;
             *
             * _openCLToggleButton.CheckedChange += (sender, args) =>
             * {
             *    bool isChecked = args.IsChecked;
             *
             *    if (isChecked && !CvInvoke.HaveOpenCL)
             *    {
             *       _openCLToggleButton.Checked = false;
             *       Toast.MakeText(Context, "No OpenCL compatible device found.", ToastLength.Long).Show();
             *       isChecked = false;
             *    }
             *
             *    preference.UseOpenCL = isChecked;
             * };
             */
            return(dialog);
        }