Esempio n. 1
0
        /// <summary>
        /// Получить свойства представления по идентификатору
        /// </summary>
        /// <remarks>Используется таблица объектов интерфейса</remarks>
        public ViewProps GetViewProps(int viewID)
        {
            lock (baseLock)
            {
                try
                {
                    dataCache.RefreshBaseTables();

                    DataTable tblInterface = dataCache.BaseTables.InterfaceTable;
                    BaseTables.CheckIsNotEmpty(tblInterface, true);
                    tblInterface.DefaultView.RowFilter = "ItfID = " + viewID;

                    if (tblInterface.DefaultView.Count > 0)
                    {
                        ViewProps viewProps = new ViewProps(viewID);
                        viewProps.FileName     = (string)tblInterface.DefaultView[0]["Name"];
                        viewProps.ViewTypeCode = Path.GetExtension(viewProps.FileName);
                        return(viewProps);
                    }
                    else
                    {
                        return(null);
                    }
                }
                catch (Exception ex)
                {
                    log.WriteException(ex, Localization.UseRussian ?
                                       "Ошибка при получении свойств представления по ид.={0}" :
                                       "Error getting view properties by ID={0}", viewID);
                    return(null);
                }
            }
        }
Esempio n. 2
0
        public static Bitmap getRoundedShape(ViewProps props)
        {
            Bitmap scaleBitmapImage = props.image;

            int targetWidth  = props.size;
            int targetHeight = props.size;

            Bitmap targetBitmap = Bitmap.CreateBitmap(targetWidth,
                                                      targetHeight, Bitmap.Config.Argb8888);

            Canvas canvas = new Canvas(targetBitmap);

            Android.Graphics.Path path = new Android.Graphics.Path();
            path.AddCircle(((float)targetWidth - 1) / 2,
                           ((float)targetHeight - 1) / 2,
                           (Math.Min(((float)targetWidth),
                                     ((float)targetHeight)) / 2),
                           Android.Graphics.Path.Direction.Ccw);

            canvas.ClipPath(path);
            Bitmap sourceBitmap = scaleBitmapImage;

            canvas.DrawBitmap(sourceBitmap,
                              new Rect(0, 0, sourceBitmap.Width,
                                       sourceBitmap.Height),
                              new Rect(0, 0, targetWidth, targetHeight), null);
            return(targetBitmap);
        }
 public RandomShapeAndSizeGenerator(ViewProps props)
 {
     props.isCircle    = isCircleImage();
     props.size        = GetRandomSize();
     props.RandomColor = GetRandomColor();
     prop = props;
 }
Esempio n. 4
0
        public static Bitmap getRandomBitmap(ViewProps props)
        {
            Bitmap bitmap = Bitmap.CreateBitmap(props.size, props.size, Bitmap.Config.Argb8888);
            Canvas canvas = new Canvas(bitmap);

            Paint paint = new Paint();

            paint.SetARGB(props.RandomColor.A, props.RandomColor.R, props.RandomColor.G, props.RandomColor.B);
            paint.SetStyle(Paint.Style.Fill);
            canvas.DrawPaint(paint);

            return(bitmap);
        }
Esempio n. 5
0
        public static ViewProps SetViewProperty(ViewProps props)
        {
            RandomShapeAndSizeGenerator generator = new RandomShapeAndSizeGenerator(props);

            if (generator.prop.isCircle)
            {
                generator.prop.image = getRandomBitmap(generator.prop);
                generator.prop.image = getRoundedShape(generator.prop);
            }
            else
            {
                generator.prop.image = getRandomBitmap(generator.prop);
            }

            return(generator.prop);
        }
Esempio n. 6
0
        public static async Task <ViewProps> SetProperties(ViewProps props)
        {
            RandomShapeAndSizeGenerator generator = new RandomShapeAndSizeGenerator(props);

            if (generator.prop.isCircle)
            {
                if (CheckConnection.iSConnected() == true)
                {
                    var root = RetrieveXml.GetXml("http://www.colourlovers.com/api/colors/random");
                    if (root != null && root.GetElementsByTagName("imageUrl").Count != 0)
                    {
                        generator.prop.imageURL = root.GetElementsByTagName("imageUrl")[0].InnerText;
                        generator.prop.title    = root.GetElementsByTagName("title")[0].InnerText;

                        DownloadImage download = new DownloadImage(generator.prop);
                        generator.prop = await download.downloadAsync();

                        generator.prop.image = getRoundedShape(generator.prop);
                    }
                }
            }
            else
            {
                if (CheckConnection.iSConnected() == true)
                {
                    var root = RetrieveXml.GetXml("http://www.colourlovers.com/api/patterns/random");
                    if (root != null && root.GetElementsByTagName("imageUrl").Count != 0)
                    {
                        generator.prop.imageURL = root.GetElementsByTagName("imageUrl")[0].InnerText;
                        generator.prop.title    = root.GetElementsByTagName("title")[0].InnerText;

                        DownloadImage download = new DownloadImage(generator.prop);
                        generator.prop = await download.downloadAsync();
                    }
                }
            }
            return(generator.prop);
        }
Esempio n. 7
0
        /// <summary>
        /// Получить представление из кэша или от сервера
        /// </summary>
        public T GetView <T>(int viewID, bool throwOnError = false) where T : BaseView
        {
            try
            {
                T view = null;

                // получение представления из кеша
                DateTime utcNowDT = DateTime.UtcNow;
                Cache <int, BaseView> .CacheItem cacheItem = cache.GetItem(viewID, utcNowDT);
                BaseView viewFromCache;
                DateTime viewAge;        // время изменения файла представления
                bool     viewIsNotValid; // представление могло устареть

                if (cacheItem == null)
                {
                    viewFromCache  = null;
                    viewAge        = DateTime.MinValue;
                    viewIsNotValid = true;
                }
                else
                {
                    viewFromCache  = cacheItem.Value;
                    viewAge        = cacheItem.ValueAge;
                    viewIsNotValid = utcNowDT - cacheItem.ValueRefrDT > ViewValidSpan;
                }

                // получение представления от сервера
                if (viewFromCache == null || viewIsNotValid)
                {
                    ViewProps viewProps = dataAccess.GetViewProps(viewID);

                    if (viewProps == null)
                    {
                        if (throwOnError)
                        {
                            throw new ScadaException(Localization.UseRussian ?
                                                     "Отсутствуют свойства представления." :
                                                     "View properties are missing.");
                        }
                    }
                    else
                    {
                        DateTime newViewAge = serverComm.ReceiveFileAge(ServerComm.Dirs.Itf, viewProps.FileName);

                        if (newViewAge == DateTime.MinValue)
                        {
                            if (throwOnError)
                            {
                                throw new ScadaException(Localization.UseRussian ?
                                                         "Не удалось принять время изменения файла представления." :
                                                         "Unable to receive view file modification time.");
                            }
                        }
                        else if (newViewAge != viewAge) // файл представления изменён
                        {
                            // создание и загрузка нового представления
                            view = (T)Activator.CreateInstance(typeof(T));
                            if (serverComm.ReceiveView(viewProps.FileName, view))
                            {
                                if (cacheItem == null)
                                {
                                    // добавление представления в кеш
                                    cache.AddValue(viewID, view, newViewAge, utcNowDT);
                                }
                                else
                                {
                                    // обновление представления в кеше
                                    cache.UpdateItem(cacheItem, view, newViewAge, utcNowDT);
                                }
                            }
                            else
                            {
                                if (throwOnError)
                                {
                                    throw new ScadaException(Localization.UseRussian ?
                                                             "Не удалось принять представление." :
                                                             "Unable to receive view.");
                                }
                            }
                        }
                    }
                }

                // использование представление из кеша
                if (view == null && viewFromCache != null)
                {
                    view = viewFromCache as T;
                    if (view == null && throwOnError)
                    {
                        throw new ScadaException(Localization.UseRussian ?
                                                 "Несоответствие типа представления." :
                                                 "View type mismatch.");
                    }
                }

                return(view);
            }
            catch (Exception ex)
            {
                string errMsg = string.Format(Localization.UseRussian ?
                                              "Ошибка при получении представления с ид.={0} из кэша или от сервера" :
                                              "Error getting view with ID={0} from the cache or from the server", viewID);
                log.WriteException(ex, errMsg);

                if (throwOnError)
                {
                    throw new ScadaException(errMsg);
                }
                else
                {
                    return(null);
                }
            }
        }
 public DownloadImage(ViewProps prop)
 {
     props = prop;
 }