The personal conception and goal of SC design planning based on Directui

Source: Internet
Author: User
Tags compact

SC Design Planning and objectives
2015-03

the goals of SC design:
SC is a simple Directui-based interface library. Design SC, mainly based on personal interests and learning purposes. In my study of C + + in the past few months, will be a little harvest and understanding. I want to improve and consolidate by designing SC. It is a process of making wheels repeatedly, and also a process of individual learning improvement.
In the study of C + +, but also feel the use of C + + development, interface design, is a basic and must do. Excellent, mature and systematic qt and so on, open source is a lot of, but learn and understand others code, see is a foundation, write their own, can more deeply grasp the foundation. So want to through their own learning and accumulation, gradually, cumulative development of a directui based on a SC library. And hope that after the completion of SC, through open source and other means, published on the network, so that other C + + enthusiasts to exchange Directui experience. To make their C + + knowledge and SC library relatively slowly improve and improve, and let SC achieve practical goals.

Therefore, the goal of designing SC can be summed up in the following points:
1. Learning and promotion;
As a beginner in the C + + language. Now from the beginning to learn C + +, after learning the most basic C + + knowledge, hope that through the process of developing SC, can more understanding of the C + + language and some system-related basic knowledge.
The development of SC, is a personal hobby and the purpose of individual learning, is based on I have enough energy and time to carry out on the basis. The suspicion of repeating the wheel is a personal choice. is also one of the ways to improve oneself, I choose this method, is based on their own hobbies and energy.
In developing languages more convenient, smarter, more integrated today, if the development of the language as a tool, over time, will lose the motivation to learn and improve. When the language is too much tool, it also makes the work dull and uninteresting. May even become a little more strenuous. So, it's a fun and challenging thing to write something relatively basic about yourself.
2. Sharing and communication;
There are many open source code based on Directui on the Internet. I also probably understand and study a bit. On the basis of absorbing other people's experience, it is very helpful to develop one's own hands, although it is superfluous, but it is useful to improve and digest knowledge. If SC is on the basis of others, it is good for Directui open source. SC will be based on open source and shared goals, can provide others with a reference to understand an opportunity, but also can let oneself under the guidance of others, further improve. Although I still do not know how to do open source publishing, but this is the first step to learn slowly.
3. Practical and promotional;
Some open source projects, due to unprofitable, developers are often halfway. This is a normal phenomenon. SC will do the same in the future. But it doesn't matter. The goal of developing SC is to communicate, learn and improve. On this basis, through a period of accumulation and improvement, so that SC can achieve practical goals. Also realizes the personal initial idea. If SC is used as a foundation, it can be applied to the projects that it will develop in the future, and continuously improve it. Even on this basis, the development of a pro version or even a commercial version, through the promotion to obtain revenue. It's just as good. In short, there is hope that the SC do better, but also let its natural. Personal goals are six months of development and learning, half a year to improve the improvement. What will happen then, look at the time and energy. Also see the level and degree of SC. Have a plan, also see the actual situation, say again.
4. Based on personal hobbies;
Learning a development language, is a boring start, to find a goal to start their own, will increase the momentum. Some people learn to work better, some people learn because of hobbies, I am based on hobbies, but also to pass the time. The plan and goal of setting a SC is to make things look a little hopeful and come up with a step. Everyone should have a little dream, in case it comes true. Besides, SC is not a dream, just a simple idea, can go to which step, simply do not know. Starting with the best ideas initially, there will be more power to update. First of all, he is not a bad thing, secondly, he is a learning process, there is learning to progress.

SC tasks:
SC is a library of interfaces that are basic to Directui. He could not compare it to commercialized, enterprise-like products. In this respect, QT, WPF, domestic uipower directui and so on will be your best choice. Like other open source works, SC is more based on learning and communication. He will not be with the existing open source Directui, and will not be limited to directui. SC will gather more experience, reference and learn more about the strengths of others, and combined with personal ideas and design, become a set of different Directui interface library.

First, you need to know that the Directui interface library based on C + + will have fewer applications. More development has shifted to the web. If the PC does not die, it will still be used by some people, which is the basic power to develop SC. As for the more is less, for the moment not to consider.

Now do development, all want to cross platform! SC also wants to achieve multi-platform, but, the ability is limited, has the idea, but cannot realize. So, SC, start with our most familiar Windows first. On the basis of being able to complete the implementation under Windows, say something else. Therefore, the design will be based on the implementation of a multi-platform structure to start. As to whether we can really realize multi-platform, we should not make too many plans.

Because I only learned VC, so the basis of SC, from the VC-based Windows platform implemented under the Directui interface Library began. The limitations of the start are inevitable, but it is also important to get out of the first step.

To do anything, you have to have a goal, you have to have a plan. This plan is the first step in the planning implementation. The first parts of the planning, I learned C + +, has been basically mastered, but also gradually realized. The middle parts are also working slowly, and will soon be realized. The latter sections, which are future plans, may or may not be implemented. SC Although is my study and hobby. But I will use it in my personal other small software and project development. Therefore, to achieve the usefulness of SC is also one of my goals.

Explanation of SC Name:
SC: "S" can be a sub or simple meaning. "C" can be the meaning of the compact, or it can be component. "C" can also be understood as C language. "SC" to the effect is a simple and compact C + + Language interface component library.
SCW: "W" means windows. SCW or SC (W) refers to the SC library that supports the Windows platform. Different platforms use different suffix letters, such as SCM: refers to SC libraries under the SC MacOSX platform. SCA: Refers to the SC library under the Android platform. SCU: Refers to the SC library under the Ubuntu platform. Wait a minute. Ability to develop corresponding SC support libraries for these platforms. Of course, this is not very likely, personal energy and time is not enough, knowledge is not enough. So the odds are small, but it's set up first, and who knows, in case it's possible, not necessarily.

SC Planning:
1. Basic framework
As the basic library of SC, this part of the code as far as possible platform-independent. SC in the basic classes, common functions, such as the future of the so-called cross-platform, as far as possible to use the STL Library, learning to reference the existing mature code, combined with their own ideas to achieve. In the Windows platform, in order to improve their development efficiency, some of the content will first use the VC library has some code to achieve the goal.

The basic framework includes the definition of some macros, the universality definition of data types, the realization of CObject class and reflection mechanism. Common common function library collection, some other modules (such as drawings, forms, components, etc.) of the base class ... such as Encapsulates the properties and behaviors that are common to the SC component in the base class.
Including: CPointer, CPOINTF,CRECTF, CPATHF, Ccomponent, Ccontrol, Cform and so on.

2. System Platform Support
It mainly takes the IApplication application interface class, realizes the main program start, exits, the window creation, the message processing and so on, constructs one to realize the cross-Platform Foundation framework.
Use service inheritance to generate abstract IApplication application interface classes, plan iapplication common events, and more.
The CWinApp class is implemented first by inheriting iapplication. Complete the Windows-based implementation of the main program for message processing, form creation, mouse and keyboard service takeover, etc.

3. Drawing engine
As the middle tier of the interface display output and code implementation, the drawing engine uses a purely virtual image device context to encapsulate the application's drawing actions. Including points, lines, polygons, regions, images and other drawing, as well as some common effects, deformation and so on. Provides a common entry to encapsulate a specific drawing implementation. Based on different platforms, different drawing engines are used to implement the modules.
Through the Ccanvas class, provides the drawing pure virtual function, then derives the Cgdicanvas, Cdirect2dcanvas and so on the realization class. To complete GDI + and Direct2D's drawing engine, to achieve the purpose of interface output.
Support for BMP, PNG, JPG, GIF, TGA and other image formats; multi-layer alpha blend effects are supported.

4. UI Logic
Based on the Directui concept, a form-oriented component is implemented without a handle. The image, font, image, style, cursor and other resources for unified management, and sharing and optimization of resources, with minimal memory footprint, the highest drawing efficiency to achieve the form component state changes, area refresh, interface initialization, form repainting and so on.
By drawing in memory, and then output to the display terminal in a way to achieve faster interface drawing and redrawing.
It includes some basic logic operation to realize the change of the interface caused by the mouse movement, click, key and other input changes.
The Ccontrol class is responsible for handling the various UI logic common to all controls.

5. Event handling
Implement message takeover, distribute messages, and so on. Encapsulates the form, the container, the component the mouse movement, the click, the user key and so on operation processing. Encapsulates the position movement, size change, drag response, and other operations of the component.

6. Interface layout
The position, alignment, docking, etc. between the inside of the window, the components of the container, can be easily implemented by the layout property of the control. Through the concept of the reference layer, it is convenient and efficient to realize the components in the form of the top floor of the display, the transparency of component coverage, the component background of the glass and other effects.

7. Theme (skin changing) engine
Support the form and all the controls to skin, and provide a variety of modes such as resource mode, file mode, design-time theme and skin changing. Real-time implementation of global or part of the skin-changing components. Make the interface more personalized and aesthetically pleasing.

8. Multi-lingual implementation
Provides standard text output for all components and management of resources in multiple languages, and provides the ability to dynamically switch languages and update text displays.

9. Effects
Through the drawing engine and rendering technology, to achieve the display and switching effects.
Component and text display effects: Transparent, Shadow, Blur, deform, reflection, etc.
Basic switching effects: Fade in and out, slide up and down, and so on.
Image display of various effects: such as shutters, pages, water droplets, ripples, etc.

10. Standard Components
Complete some of the most common basic components based on the Directui implementation. such as text, button, image display, input box, tick box, container, list box, etc.
Including:
Label/glyphlabel,button, Radiobox, CheckBox, Menu, PopupMenu, TrayIcon, Timer, Panel, Bevel,line, ProgressBar, TrackBar, ImageView, ListBox, Treebox, Edit, ComboBox ...
Components are extensible. Derived components with richer functionality can be designed based on basic components.

11. Extensions, custom components * *
Some powerful components with specific features, or richer functionality.
Similar to Excelgrid, Richedit,htmlview Rich Text display and other components.

12. Print output
Implement print and output functions for text and images. Provides the implementation of basic options such as styling, paper selection, printer setup, and more.
* * Provide richer, more powerful database report format settings in the case of subsequent support databases.

13. Visual Interface design Tool sdk**
Provide interface design tool SDK, support drag-and-drop interface design, so that the interface development WYSIWYG;

14. Documentation * *
Documentation includes: Design documents, development logs, bug fix logs, upgrade logs, help documents, instructions for use, etc., blog documentation.

15. Database parts, Components * *
Provides a pure virtual abstract class based on a database. Cdbconnect, Cdataset,cdatasource and so on. Derived from MySQL-based, sqlserver,orecle ... such as database connection and management of basic operational classes, such as the display of data, add, insert, delete, query, screening and so on. and connect the data action response to the base component.
Provides a richer database printing and report generation module.

PRO (BUSINESS) Edition * *
Enable the basic SC library to achieve the goal of developing generic gadget and application class software. On this basis, if possible and necessary, the design is based on the basic SC Library of the enhanced or commercial version.

SC time Plan:
As a personal hobby and interest, SC development is slack, there is no detailed time schedule, but there will be a general implementation plan. Given the limited capacity and energy of a person, the expected effect of the goals achieved in the planning is not guaranteed. In 2015, a full year from now, it is planned to devote as much time as possible to the completion of the SC library in the event that other normal lives are not affected. As a lazy Personal Year program, SC is gradually realized in learning and interest.

Request to write as many logs as possible during the design and learning process. and periodically to the task of summary and document collation. The key thing that can be written as a document or a notebook for the record. Good writing record, stronger than good memory. Pass the time in study, think about it, a year will soon pass.

The approximate schedule is as follows:

March:
Organize the study materials and the completed code for the previous months. Standardize the design documents and complete the work of the 1-3 projects.
April:
Complete the work of 4-8 projects in the planning. and learn how to do open source publishing. Submit the completed code to the open source Web site. And with the interests of similar friends to exchange and study. To further refine planning and code.
May:
Complete the work of 9-10 projects in the planning. The implementation and testing of the most commonly used components in the 10 "standard components" is completed.
Based on this, one or more simple demonstration small programs based on standard components are completed.
June:
Learn and communicate more with other enthusiasts through open source. Organize and refine the completed code to enrich other unfinished functions.
Continue with the unfinished section of standard components. Organize related documents. and proceed with the development of one to two specific components.
July:
Using SC Library, develop a small tool based on SC Library, tentatively a small software for calendars, event reminders, desktop backgrounds, and more. In order to test the performance of SC in the UI aesthetics design and basic ability to achieve efficiency.
August:
Develop a picture browser software based on the SC library. Learn more about image format processing, image display effects, and more.
September:
September I plan to travel with the rest of the month. Do not make too much arrangement ~ ~. If there is any inspiration in the tour, or there is plenty of time, then plan for the remaining months of the year. One months of leisure, but also the storage of energy for one months.
October-December:
Refine or develop the 12 sections of SC planning.

I do not know how to open source and release source. Welcome to have a friend to understand the message to provide help.
interested friends can also add Q or group to communicate:
QQ Group: 177,312,461 person qq:48018276

The personal conception and goal of SC design planning based on Directui

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.