box_lib.obj: clear code

git-svn-id: svn://kolibrios.org@8346 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2020-12-08 21:01:35 +00:00
parent a327d88cb7
commit 5f41a75e27
30 changed files with 375 additions and 2091 deletions

View File

@ -1,347 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@ -1,10 +0,0 @@
;include 'editbox.mac' ;macro which should make life easier :) specially for editbox
include 'checkbox2.mac' ;macro implements checkbox
;include 'optionbox.mac' ;macro implements optionbox
;include 'scrollbar.mac' ;macro implements scrollbar
;include 'd_button.mac' ;macro implements dinamic_button
;include 'menubar.mac' ;macro implements menubar
;include 'filebrowser.mac' ;macro implements filebrowser
;include 'tree_list.mac' ;macro implements tree_list, image_list, list_box
;include 'pathshow.mac' ;macro implements pathshow
;include 't_edit.mac' ;macro implements text_editor

View File

@ -1,320 +0,0 @@
; Copyright (C) KolibriOS team 2004-2010. All rights reserved.
; Refer to the GNU General Public license (the "GPL") for full details.
;
;*****************************************************************************
; Box_Lib - library of graphical components
;
; Authors:
; Alexey Teplov aka <Lrz>
; Marat Zakiyanov aka Mario79, aka Mario
; Evtikhov Maxim aka Maxxxx32
; Eugene Grechnikov aka Diamond
; hidnplayr
; Igor Afanasiev aka IgorA
;*****************************************************************************
format MS COFF
public EXPORTS
section '.flat' code readable align 16
include '../../../../macros.inc'
include '../../../../proc32.inc'
include 'bl_sys.mac'
include 'box_lib.mac' ;macro which should make life easier :)
;-----------------------------------------------------------------------------
mem.alloc dd ? ;ôóíêöèÿ äëÿ âûäåëåíèÿ ïàìÿòè
mem.free dd ? ;ôóíêöèÿ äëÿ îñâîáîæäåíèÿ ïàìÿòè
mem.realloc dd ? ;ôóíêöèÿ äëÿ ïåðåðàñïðåäåëåíèÿ ïàìÿòè
dll.load dd ?
;----------------------------------------------------
;EditBox
;----------------------------------------------------
align 16
;use_editbox_draw ;macro reveals the function of the display.
align 16
;use_editbox_key ;macro reveals processing function of the keypad.
align 16
;use_editbox_mouse ;macro reveals processing function of the mouse.
;----------------------------------------------------
;CheckBox
;----------------------------------------------------
align 16
_init_checkbox2 ;macro for init checkbox
align 16
use_checkbox_draw2 ;macro reveals the function of the display.
align 16
use_checkbox_mouse2 ;macro reveals processing function of the mouse.
;--------------------------------------------------
;radiobutton Group
;--------------------------------------------------
align 16
;use_optionbox_driver ;macro that control the operating modes
align 16
;use_optionbox_draw ;macro reveals the function of the display.
align 16
;use_optionbox_mouse ;macro reveals processing function of the mouse.
;--------------------------------------------------
;scrollbar Group
;--------------------------------------------------
align 16
;use_scroll_bar
align 16
;use_scroll_bar_vertical
align 16
;use_scroll_bar_horizontal
;--------------------------------------------------
;dinamic button Group
;--------------------------------------------------
align 16
;use_dinamic_button
;--------------------------------------------------
;menubar Group
;--------------------------------------------------
align 16
;use_menu_bar
;--------------------------------------------------
;filebrowser Group
;--------------------------------------------------
align 16
;use_file_browser
;--------------------------------------------------
;tree list
;--------------------------------------------------
align 16
;use_tree_list
;--------------------------------------------------
;PathShow Group
;--------------------------------------------------
align 16
;use_path_show
;--------------------------------------------------
;text editor
;--------------------------------------------------
align 16
;use_text_edit
;input:
; eax = óêàçàòåëü íà ôóíêöèþ âûäåëåíèÿ ïàìÿòè
; ebx = ... îñâîáîæäåíèÿ ïàìÿòè
; ecx = ... ïåðåðàñïðåäåëåíèÿ ïàìÿòè
; edx = ... çàãðóçêè áèáëèîòåêè (ïîêà íå èñïîëüçóåòñÿ)
align 16
lib_init:
mov [mem.alloc], eax
mov [mem.free], ebx
mov [mem.realloc], ecx
mov [dll.load], edx
ret
align 16
EXPORTS:
dd sz_init, lib_init
dd sz_version, 0x00000001
;dd sz_edit_box, edit_box
;dd sz_edit_box_key, edit_box_key
;dd sz_edit_box_mouse, edit_box_mouse
;dd sz_edit_box_set_text, edit_box_set_text
;dd szVersion_ed, 0x00000001
dd sz_init_checkbox2, init_checkbox2
dd sz_check_box_draw2, check_box_draw2
dd sz_check_box_mouse2, check_box_mouse2
dd szVersion_ch2, 0x00000002
;dd sz_option_box_draw, option_box_draw
;dd sz_option_box_mouse, option_box_mouse
;dd szVersion_op, 0x00000001
;dd sz_Scrollbar_ver_draw, scroll_bar_vertical.draw
;dd sz_Scrollbar_ver_mouse, scroll_bar_vertical.mouse
;dd sz_Scrollbar_hor_draw, scroll_bar_horizontal.draw
;dd sz_Scrollbar_hor_mouse, scroll_bar_horizontal.mouse
;dd szVersion_scrollbar, 0x00010001
;dd sz_Dbutton_draw, dinamic_button.draw
;dd sz_Dbutton_mouse, dinamic_button.mouse
;dd szVersion_dbutton, 0x00010001
;dd sz_Menu_bar_draw, menu_bar.draw
;dd sz_Menu_bar_mouse, menu_bar.mouse
;dd sz_Menu_bar_activate, menu_bar.activate
;dd szVersion_menu_bar, 0x00010002
;dd sz_FileBrowser_draw, fb_draw_panel
;dd sz_FileBrowser_mouse, fb_mouse
;dd sz_FileBrowser_key, fb_key
;dd szVersion_FileBrowser, 0x00010001
;dd sz_tl_data_init, tl_data_init
;dd sz_tl_data_clear, tl_data_clear
;dd sz_tl_info_clear, tl_info_clear
;dd sz_tl_key, tl_key
;dd sz_tl_mouse, tl_mouse
;dd sz_tl_draw, tl_draw
;dd sz_tl_info_undo, tl_info_undo
;dd sz_tl_info_redo, tl_info_redo
;dd sz_tl_node_add, tl_node_add
;dd sz_tl_node_set_data, tl_node_set_data
;dd sz_tl_node_get_data, tl_node_get_data
;dd sz_tl_node_delete, tl_node_delete
;dd sz_tl_cur_beg, tl_cur_beg
;dd sz_tl_cur_next, tl_cur_next
;dd sz_tl_cur_perv, tl_cur_perv
;dd sz_tl_node_close_open, tl_node_close_open
;dd sz_tl_node_lev_inc, tl_node_lev_inc
;dd sz_tl_node_lev_dec, tl_node_lev_dec
;dd sz_tl_node_move_up, tl_node_move_up
;dd sz_tl_node_move_down, tl_node_move_down
;dd sz_tl_node_poi_get_info, tl_node_poi_get_info
;dd sz_tl_node_poi_get_next_info, tl_node_poi_get_next_info
;dd sz_tl_node_poi_get_data, tl_node_poi_get_data
;dd sz_tl_save_mem, tl_save_mem
;dd sz_tl_load_mem, tl_load_mem
;dd sz_tl_get_mem_size, tl_get_mem_size
;dd sz_tl_version_tree_list, 0x00000001
;dd sz_PathShow_prepare, path_show.prepare
;dd sz_PathShow_draw, path_show.draw
;dd szVersion_path_show, 0x00010001
;dd sz_ted_but_save_file, ted_but_save_file
;dd sz_ted_but_sumb_upper, ted_but_sumb_upper
;dd sz_ted_but_sumb_lover, ted_but_sumb_lover
;dd sz_ted_can_save, ted_can_save
;dd sz_ted_clear, ted_clear
;dd sz_ted_delete, ted_delete
;dd sz_ted_draw, ted_draw
;dd sz_ted_init, ted_init
;dd sz_ted_init_scroll_bars, ted_init_scroll_bars
;dd sz_ted_init_syntax_file, ted_init_syntax_file
;dd sz_ted_is_select, ted_is_select
;dd sz_ted_key, ted_key
;dd sz_ted_mouse, ted_mouse
;dd sz_ted_open_file, ted_open_file
;dd sz_ted_text_add, ted_text_add
;dd sz_ted_but_select_word, ted_but_select_word
;dd sz_ted_but_cut, ted_but_cut
;dd sz_ted_but_copy, ted_but_copy
;dd sz_ted_but_paste, ted_but_paste
;dd sz_ted_but_undo, ted_but_undo
;dd sz_ted_but_redo, ted_but_redo
;dd sz_ted_but_reverse, ted_but_reverse
;dd sz_ted_but_find_next, ted_but_find_next
;dd sz_ted_text_colored, ted_text_colored
;dd sz_ted_version, 0x00000002
dd 0,0
sz_init db 'lib_init',0
sz_version db 'version',0
sz_edit_box db 'edit_box',0
sz_edit_box_key db 'edit_box_key',0
sz_edit_box_mouse db 'edit_box_mouse',0
sz_edit_box_set_text db 'edit_box_set_text',0
szVersion_ed db 'version_ed',0
sz_init_checkbox2 db 'init_checkbox2',0
sz_check_box_draw2 db 'check_box_draw2',0
sz_check_box_mouse2 db 'check_box_mouse2',0
szVersion_ch2 db 'version_ch2',0
sz_option_box_draw db 'option_box_draw',0
sz_option_box_mouse db 'option_box_mouse',0
szVersion_op db 'version_op',0
sz_Scrollbar_ver_draw db 'scrollbar_v_draw',0
sz_Scrollbar_ver_mouse db 'scrollbar_v_mouse',0
sz_Scrollbar_hor_draw db 'scrollbar_h_draw',0
sz_Scrollbar_hor_mouse db 'scrollbar_h_mouse',0
szVersion_scrollbar db 'version_scrollbar',0
sz_Dbutton_draw db 'dbutton_draw',0
sz_Dbutton_mouse db 'dbutton_mouse',0
szVersion_dbutton db 'version_dbutton',0
sz_Menu_bar_draw db 'menu_bar_draw',0
sz_Menu_bar_mouse db 'menu_bar_mouse',0
sz_Menu_bar_activate db 'menu_bar_activate',0
szVersion_menu_bar db 'version_menu_bar',0
sz_FileBrowser_draw db 'FileBrowser_draw',0
sz_FileBrowser_mouse db 'FileBrowser_mouse',0
sz_FileBrowser_key db 'FileBrowser_key',0
szVersion_FileBrowser db 'version_FileBrowser',0
sz_tl_data_init db 'tl_data_init',0
sz_tl_data_clear db 'tl_data_clear',0
sz_tl_info_clear db 'tl_info_clear',0
sz_tl_key db 'tl_key',0
sz_tl_mouse db 'tl_mouse',0
sz_tl_draw db 'tl_draw',0
sz_tl_info_undo db 'tl_info_undo',0
sz_tl_info_redo db 'tl_info_redo',0
sz_tl_node_add db 'tl_node_add',0
sz_tl_node_set_data db 'tl_node_set_data',0
sz_tl_node_get_data db 'tl_node_get_data',0
sz_tl_node_delete db 'tl_node_delete',0
sz_tl_cur_beg db 'tl_cur_beg',0
sz_tl_cur_next db 'tl_cur_next',0
sz_tl_cur_perv db 'tl_cur_perv',0
sz_tl_node_close_open db 'tl_node_close_open',0
sz_tl_node_lev_inc db 'tl_node_lev_inc',0
sz_tl_node_lev_dec db 'tl_node_lev_dec',0
sz_tl_node_move_up db 'tl_node_move_up',0
sz_tl_node_move_down db 'tl_node_move_down',0
sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
sz_tl_save_mem db 'tl_save_mem',0
sz_tl_load_mem db 'tl_load_mem',0
sz_tl_get_mem_size db 'tl_get_mem_size',0
sz_tl_version_tree_list db 'version_tree_list',0
sz_PathShow_prepare db 'PathShow_prepare',0
sz_PathShow_draw db 'PathShow_draw',0
szVersion_path_show db 'version_PathShow',0
sz_ted_but_save_file db 'ted_but_save_file',0
sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0
sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0
sz_ted_can_save db 'ted_can_save',0
sz_ted_clear db 'ted_clear',0
sz_ted_delete db 'ted_delete',0
sz_ted_draw db 'ted_draw',0
sz_ted_init db 'ted_init',0
sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0
sz_ted_init_syntax_file db 'ted_init_syntax_file',0
sz_ted_is_select db 'ted_is_select',0
sz_ted_key db 'ted_key',0
sz_ted_mouse db 'ted_mouse',0
sz_ted_open_file db 'ted_open_file',0
sz_ted_text_add db 'ted_text_add',0
sz_ted_but_select_word db 'ted_but_select_word',0
sz_ted_but_cut db 'ted_but_cut',0
sz_ted_but_copy db 'ted_but_copy',0
sz_ted_but_paste db 'ted_but_paste',0
sz_ted_but_undo db 'ted_but_undo',0
sz_ted_but_redo db 'ted_but_redo',0
sz_ted_but_reverse db 'ted_but_reverse',0
sz_ted_but_find_next db 'ted_but_find_next',0
sz_ted_text_colored db 'ted_text_colored',0
sz_ted_version db 'version_text_edit',0

View File

@ -1,400 +0,0 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Basic macros for use EditBox ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ed_width equ [edi] ;ширина компонента
ed_left equ [edi+4] ;положение по оси х
ed_top equ [edi+8] ;положение по оси у
ed_color equ [edi+12] ;цвет фона компонента
shift_color equ [edi+16] ;=0x6a9480 для примера возьем желеный цвет бокса
ed_focus_border_color equ [edi+20] ;цвет рамки компонента
ed_blur_border_color equ [edi+24] ;цвет не активного компонента
ed_text_color equ [edi+28] ;цвет текста
ed_max equ [edi+32] ;кол-во символов которые можно максимально ввести
ed_text equ [edi+36] ;указатель на буфер
ed_mouse_variable equ [edi+40] ; указатель на переменную для бокса/группы
ed_flags equ [edi+44] ;флаги
bp_flags equ [ebp+44] ;в некоторых процедурах edi используется, взамен указатель храниться в ebp
ed_size equ [edi+48] ;кол-во символов
bp_size equ [ebp+48] ;кол-во симвполов, для адресации испльзуется ebpб edi занят
ed_pos equ [edi+52] ;позиция курсора
ed_offset equ [edi+56] ;смещение
cl_curs_x equ [edi+60] ;предыдущее координата курсора по х
cl_curs_y equ [edi+64] ;предыдущее координата курсора по у
ed_shift_pos equ [edi+68] ;положение курсора
ed_shift_pos_old equ [edi+72] ;старое положение курсора
ed_struc_size=76
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Bit mask from editbox
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ed_figure_only= 1000000000000000b ;одни символы
ed_always_focus= 100000000000000b
ed_focus= 10b ;фокус приложения
ed_shift_on= 1000b ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift
ed_shift_on_off=1111111111110111b
ed_shift= 100b ;включается при нажатии на shift т.е. если нажимаю
ed_shift_off= 1111111111111011b
ed_shift_bac= 10000b ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение
ed_shift_bac_cl=1111111111101111b ;очистка при удалении выделения
ed_shift_cl= 1111111111100011b
ed_shift_mcl= 1111111111111011b
ed_left_fl= 100000b
ed_right_fl= 1111111111011111b
ed_offset_fl= 1000000b
ed_offset_cl= 1111111110111111b
ed_insert= 10000000b
ed_insert_cl= 1111111101111111b
ed_mouse_on = 100000000b
ed_mous_adn_b= 100011000b
ed_mouse_on_off=1111111011111111b
ed_height=14 ; высота
struc edit_box width,left,top,color,shift_color,focus_border_color,\
blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
{
.width dd width
.left dd left
.top dd top
.color dd color
.shift_color dd shift_color
.focus_border_color dd focus_border_color
.blur_border_color dd blur_border_color
.text_color dd text_color
.max dd max
.text dd text
.mouse_variable dd mouse_variable
.flags dd flags+0
.size dd size+0
.pos dd pos+0
.offset dd 0
.cl_curs_x dd 0
.cl_curs_y dd 0
.shift dd 0
.shift_old dd 0
}
macro edit_boxes_set_sys_color start,end,color_table
{
mov edi,start
mov ecx,((end-start)/ed_struc_size)
mov esi,color_table
@@:
mov eax,dword [esi+36]
mov ebx,dword [esi+20]
push dword eax
pop dword ed_focus_border_color
shr bh,1
shr bl,1
shr ah,1
shr al,1
add ah,bh
add al,bl
ror eax,16
ror ebx,16
shr bl,1
shr al,1
add al,bl
ror eax,16
mov dword ed_blur_border_color,eax
mov dword shift_color,eax
add edi,ed_struc_size
loop @b
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Basic macros for use CheckBox ;
;Last change 12.10.2010 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ch_struc_size=36 ;размер структуры
ch_flag_en=10b ;флаг установленного чек бокса.
ch_flag_top=0x0 ;флаг расположения текста вверху т.е. 3-й бит
ch_flag_middle=100b ;флаг расположения текста в центре т.е. 4-й бит.
ch_flag_bottom=1000b ;флаг расположения текста в низу т.е. по умолчанию принимается значение внизу т.е. отсуствие 3-го и 4-го бита
2ch_left_s equ [ebp] ;кордината начала рисования по х
2ch_top_s equ [ebp+4] ;координата начала рисования по у
2ch_text_margin equ [ebp+8] ;=4 расстояние от прямоугольника чек бокса до надписи
2ch_color equ [ebp+12] ;цвет внутри checkbox
2ch_border_color equ [ebp+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
2ch_text_color equ [ebp+20] ;[edi+4] ;цвет текста
2ch_text_ptr equ [ebp+24] ;указатель на начало текстовой строки
2ch_flags equ [ebp+28] ;флаги
2ch_sz_str equ [ebp+32] ;длинна строки, вычисляется при инициализации компонента
struc check_box2 left_s,top_s,ch_text_margin,color,border_color,text_color,text,flags
{ ;структура параметров для чек бокса
.left_s: dd left_s ;+0 положение по х dw + размер dw
.top_s: dd top_s ;+4 положение по у dw + размер dw
.ch_text_margin: dd ch_text_margin ;расстояние от прямоугольника чек бокса до надписи
.color: dd color ;цвет внутри чекбокса
.border_color: dd border_color ;цвет рамки
.text_color: dd text_color ;цвет надписи
.text: dd text ;адрес в коде программы где расположен текст
.flags: dd flags+0 ;флаги
.size_of_str: dd 0x0 ;длинна строки, вычисляется при инициализации компонента
}
;Макрос проверки щелчка мышки над группой checkboxes.
macro init_checkboxes2 start,end
{
mov ebp,start
mov ecx,((end-start)/ch_struc_size)
@@:
push ebp ;указатель на первый checkbox
call [init_checkbox2] ;макрос проверки мышки над checkbox'ом
add ebp,ch_struc_size
loop @b
}
;Макрос проверки мышки группы checkboxes.
macro checkboxes_mouse2 start,end
{
mov ebp,start
mov ecx,((end-start)/ch_struc_size)
@@:
push ebp ;указатель на первый checkbox
call [check_box_mouse2] ;нарисовать checkbox
add ebp,ch_struc_size
loop @b
}
;Макрос отрисовки группы checkboxes.
macro checkboxes_draw2 start,end
{
mov ebp,start
mov ecx,((end-start)/ch_struc_size)
@@:
push ebp ;указатель на первый checkbox
call [check_box_draw2] ;нарисовать checkbox
add ebp,ch_struc_size
loop @b
}
macro check_boxes_set_sys_color start,end,color_table
{
mov ebp,start
mov ecx,((end-start)/ch_struc_size)
mov esi,color_table
@@:
push dword [esi+32] ;цвет текста в рабочей области окна
pop dword ch_text_color
push dword [esi+36] ;цвет графики в окне (разделительные линии и т.п.)
pop dword ch_border_color
add ebp,ch_struc_size
loop @b
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Basic macros for use OptionBox ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
{ ;структура параметров для чек бокса
op_flag_en=10b
.option_group: dd point_gr
.left: dw left ;+0 ;положение по х
.top: dw top ;положение по у
.ch_text_margin: dd op_text_margin ;расстояние от прямоугольника чек бокса до надписи
.ch_size: dd op_size ;размер квадрата чек бокса, для примера 12
.color: dd color ;цвет внутри чекбокса
.border_color: dd border_color ;цвет рамки
.text_color: dd text_color ;цвет надписи
.text: dd text ;адрес в коде программы где расположен текст
.ch_text_length: dd op_text_length ;длинна строки с символами
.flags: dd flags+0 ; флаги
}
option_group equ [edi]
op_left equ [edi+4] ;координата начала рисования по х
op_top equ [edi+6] ;координата начала рисования по у
op_text_margin equ [edi+8] ;=4 расстояние от прямоугольника чек бокса до надписи
op_size equ [edi+12] ;12 размер квадрата чек бокса
op_color equ [edi+16]
op_border_color equ [edi+20] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
op_text_color equ [edi+24];[edi+4] ;цвет текста
op_text_ptr equ [edi+28] ;указатель на начало текстовой строки
op_text_length equ [edi+32]
op_flags equ [edi+36] ;флаги
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Basic macros for use TreeList ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
info_capt_len,el_focus, p_scrol,on_press {
.data_info dd 0
.info_size dw info_size
.info_max_count dd info_max_count
.style dd style
.data_nodes dd 0
.data_img dd 0
.img_cx dw img_cx
.img_cy dw img_cy
.data_img_sys dd 0
.ch_tim dd 0
.ls_tim dd 0
.tim_undo dd 0
.cur_pos dd 0
.col_bkg dd col_bkg
.col_zag dd col_zag
.col_txt dd col_txt
.box_left dd box_l
.box_top dd box_t
.box_width dd box_w
.box_height dd box_h
.capt_cy dw capt_cy
.info_capt_offs dw info_capt_offs
.info_capt_len dw info_capt_len
.el_focus dd el_focus
.p_scrol dd p_scrol
rb 4
.on_activate dd 0
.on_press dd on_press
}
tl_info_size equ word[edi +4] ;размер данных выделяемых для каждого узла (пользовательськие данные + текст для подписи)
tl_info_max_count equ dword[edi+6] ;максимальное количество узлов, которые можно добавить в элемент
tl_style equ dword[edi+10] ;стили элемента
tl_data_nodes equ dword[edi+14] ;указатель на структуры узлов
tl_data_img equ dword[edi+18] ;указатель на изображения с иконками узлов
tl_img_cx equ word[edi+22] ;ширина иконок
tl_img_cy equ word[edi+24] ;высота иконок
tl_data_img_sys equ dword[edi+26] ;указатель на системные изображения (стрелки, плюсики)
tl_ch_tim equ dword[edi+30] ;количество изменений в файле
tl_tim_undo equ dword[edi+38] ;количество отмененных действий
tl_cur_pos equ dword[edi+42] ;позиция курсора
tl_col_bkg equ dword[edi+46] ;цвет фона
tl_col_zag equ dword[edi+50] ;цвет заголовка
tl_col_txt equ dword[edi+54] ;цвет текста
tl_box_left equ dword[edi+58]
tl_box_top equ dword[edi+62]
tl_box_width equ dword[edi+66]
tl_box_height equ dword[edi+70]
tl_capt_cy equ word[edi+74] ;высота подписи
tl_info_capt_offs equ word[edi+76] ;сдвиг для начала текста (подписи узла)
tl_info_capt_len equ word[edi+78] ;длинна текста подписи узла (если = 0 то до конца структуры)
tl_el_focus equ dword[edi+80] ;указатель на структуру элемента в фокусе
tl_p_scrol equ dword[edi+84] ;указатель на структуру скроллинга
tl_on_press equ dword[edi+96] ;указатель на функцию, которая вызывается при нажатии Enter
;data_info dd ? ;+ 0 указатель на основные даные
;ls_tim dd ? ;+34 время последнего сохранения
;on_activate dd ? ;+92 указатель на функцию при активировании узла
;константы стиля
tl_key_no_edit equ 1b ;элемент нельзя редактировать на клавиатуре (изменять уровни, удалять)
tl_draw_par_line equ 10b ;рисовать линии к родительскому узлу
tl_list_box_mode equ 100b ;стиль не отображает уровни (как в ListBox все одного уровня)
;константы для функций
tl_err_save_memory_size equ 10b ;не хватает памяти для сохранения элемента
tl_err_load_caption equ 1b ;в памяти нет заголовка 'tree'
tl_err_load_info_size equ 100b ;не совпадает размер информационной структуры при открытии
tl_load_mode_add equ 0x20000 ;опция считывания в режиме добавления информации
tl_save_load_heder_size equ 26 ;размер заголовка для записи/чтения элементов
tl_offs_box equ 58 ;начало BOX структуры для tree_list
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Basic macros for use TextEditor ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ted_wnd_l equ dword[edi+ 0] ;окно редактора: отступ слева
ted_wnd_t equ dword[edi+ 4] ;окно редактора: отступ сверху
ted_wnd_w equ dword[edi+ 8] ;окно редактора: ширина
ted_wnd_h equ dword[edi+12] ;окно редактора: высота
ted_rec_l equ dword[edi+16] ;ширина панели в окне
ted_rec_t equ dword[edi+20] ;высота панели в окне
ted_rec_w equ dword[edi+24] ;ширина символа (знакоместа) в окне
ted_rec_h equ dword[edi+28] ;высота символа (знакоместа) в окне
ted_drag_m equ byte[edi+32] ;выделение от мыши
ted_drag_k equ byte[edi+33] ;выделение от клавиатуры
ted_sel_x0 equ dword[edi+34] ;координата выделения x0
ted_sel_y0 equ dword[edi+38] ;координата выделения y0
ted_sel_x1 equ dword[edi+42] ;координата выделения x1
ted_sel_y1 equ dword[edi+46] ;координата выделения y1
;запасные координаты выделения
ted_seln_x0 equ dword[edi+50]
ted_seln_y0 equ dword[edi+54]
ted_seln_x1 equ dword[edi+58]
ted_seln_y1 equ dword[edi+62]
ted_tex equ dword[edi+66] ;указатель на память для хранения текста
ted_tex_1 equ dword[edi+70] ;указатель на 1-ю стркутру символа
ted_tex_end equ dword[edi+74] ;указатель на последнюю структуру символа
ted_cur_x equ dword[edi+78] ;координата x курсора
ted_cur_y equ dword[edi+82] ;координата y курсора
ted_max_chars equ dword[edi+86] ;максимальное число символов в одном документе
ted_colors_text_count equ dword[edi+90] ;колличество цветов текста
ted_key_words_count equ dword[edi+94] ;колличество ключевых слов
ted_color_cursor equ dword[edi+98] ;цвет курсора
ted_color_wnd_capt equ dword[edi+102] ;цвет полей вокруг окна
ted_color_wnd_work equ dword[edi+106] ;цвет фона окна
ted_color_wnd_bord equ dword[edi+110] ;цвет текста на полях
ted_color_select equ dword[edi+114] ;цвет выделения
ted_color_cur_text equ dword[edi+118] ;цвет символа под курсором
ted_color_wnd_text equ dword[edi+122] ;цвет текста в окне
ted_syntax_file equ dword[edi+126] ;указатель на начало файла синтаксиса
ted_syntax_file_size equ dword[edi+130] ;максимальный размер файла синтаксиса
ted_text_colors equ dword[edi+134] ;указатель на массив цветов текста
ted_help_text_f1 equ dword[edi+138] ;указатель на текст справки (по нажатии F1)
ted_help_id equ dword[edi+142] ;идентификатор для справки
ted_key_words_data equ dword[edi+146] ;указатель на структуры ключевых слов TexColViv
ted_tim_ch equ dword[edi+150] ;колличество изменений в файле
ted_tim_undo equ dword[edi+154] ;колличество отмененных действий
ted_tim_ls equ dword[edi+158] ;время последнего сохранения
ted_tim_co equ dword[edi+162] ;время последней цветовой разметки
ted_el_focus equ dword[edi+166] ;указатель на переменную элемента в фокусе
ted_err_save equ byte[edi+170] ;ошибка сохранения файла
ted_panel_id equ byte[edi+171] ;номер открытой панели
ted_key_new equ byte[edi+172] ;символ, который будет добавлятся с клавиатуры
ted_symbol_new_line equ byte[edi+173] ;символ завершения строки
ted_scr_w equ dword[edi+174] ;вертикальный скроллинг
ted_scr_h equ dword[edi+178] ;горизонтальный скроллинг
ted_arr_key_pos equ dword[edi+182] ;указатель на массив позиций ключевых слов
ted_buffer equ dword[edi+186] ;указатель на буфер копирования/вставки
ted_buffer_find equ dword[edi+190] ;указатель на буфер для поиска
ted_cur_ins equ byte[edi+194] ;режим работы курсора (обычный или замена)
ted_mode_color equ byte[edi+195] ;режим выделения слов цветом (0-выкл. 1-вкл.)
ted_mode_invis equ byte[edi+196] ;режим показа непечатаемых символов
ted_gp_opt equ byte[edi+197] ;опции возвращаемые функцией ted_get_pos_by_cursor
ted_fun_on_key_ctrl_o equ dword[edi+198] ;указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла)
ted_fun_on_key_ctrl_f equ dword[edi+202] ;... Ctrl+F (вызова/скрытия панели поиска)
ted_fun_on_key_ctrl_n equ dword[edi+206] ;... Ctrl+N (создание нового документа)
ted_fun_on_key_ctrl_s equ dword[edi+210] ;... Ctrl+S
ted_buffer_size equ dword[edi+214] ;размер буфера копирования/вставки
ted_fun_find_err equ dword[edi+218] ;указатель на функцию вызываемую если поиск закончился неудачно
ted_fun_init_synt_err equ dword[edi+222] ;указатель на функцию вызываемую при ошибочном открытии файла синтаксиса
ted_fun_draw_panel_buttons equ dword[edi+226] ;указатель на функцию рисования панели с кнопками
ted_fun_draw_panel_find equ dword[edi+230] ;указатель на функцию рисования панели поиска
ted_fun_draw_panel_syntax equ dword[edi+234] ;указатель на функцию рисования панели синтаксиса
ted_fun_save_err equ dword[edi+238] ;указатель на функцию вызываемую если сохранение файла закончилось неудачно
ted_increase_size equ dword[edi+242] ;число символов на которые будет увечиваться память при нехватке
ted_ptr_free_symb equ dword[edi+246] ;указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)
;------------------------------------------------------------------------------
ted_opt_ed_move_cursor equ 1 ;двигать курсор после добавления текста
ted_opt_ed_change_time equ 2 ;добавлять изменения при редактировании текста
ted_offs_sel equ 34 ;смещение структуры sel
ted_offs_seln equ 50 ;смещение структуры seln
ted_offs_count_colors equ 90 ;смещение переменной колличества цветов
ted_offs_key_new equ 172
ted_offs_symbol_new_line equ 173 ;смещение символа новой строки
;------------------------------------------------------------------------------
; *** scroll bar constant ***
sb_offs_size_x equ 0
sb_offs_start_x equ 2
sb_offs_size_y equ 4
sb_offs_start_y equ 6
sb_offs_max_area equ 16
sb_offs_cur_area equ 20
sb_offs_position equ 24
sb_offs_bckg_col equ 28
sb_offs_frnt_col equ 32
sb_offs_line_col equ 36
sb_offs_redraw equ 40
sb_offs_delta2 equ 46
sb_offs_all_redraw equ 80
;------------------------------------------------------------------------------

View File

@ -1,205 +0,0 @@
;*****************************************************************************
; Example for Box_lib: checkbox
; Copyright (c) 2007-2010, Alexey Teplov aka <Lrz>
; All rights reserved.
;
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
; * Redistributions of source code must retain the above copyright
; notice, this list of conditions and the following disclaimer.
; * Redistributions in binary form must reproduce the above copyright
; notice, this list of conditions and the following disclaimer in the
; documentation and/or other materials provided with the distribution.
; * Neither the name of the <organization> nor the
; names of its contributors may be used to endorse or promote products
; derived from this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov ''AS IS'' AND ANY
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;******************************************************************************
use32
org 0x0
;------------ <head> from kolibrios programm
db 'MENUET01'
dd 0x01
dd START
dd MEM_END
dd PRIL_END
dd PRIL_END
dd 0x0
dd cur_dir_path
;------------ </head>
;------------ <include macros>
include '../../../../macros.inc'
include '../load_lib.mac'
include 'box_lib.mac'
;include 'macros.inc'
;include 'load_lib.mac'
;------------ </include macros>
;------------ <init library>
@use_library
;------------ </init library>
;---------------------------------------------------------------------
;--- Start of program ----------------------------------------------
;---------------------------------------------------------------------
START:
mcall 40,0x27
sys_load_library library_name, cur_dir_path, library_path, system_path, \
err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
test eax,eax
jnz exit
;init checkboxes
push dword check1
call [init_checkbox]
push dword check2
call [init_checkbox]
push dword check3
call [init_checkbox]
push dword check4
call [init_checkbox]
push dword check5
call [init_checkbox]
push dword check6
call [init_checkbox]
window:
call draw_window ;ïåðâîíà÷àëüíî íåîáõîäèìî íàðèñîâàòü îêíî
align 4
still: ;îñíîâíîé îáðàáîò÷èê
mcall 10 ;Îæèäàòü ñîáûòèÿ
dec eax
jz window
dec eax
jz key
dec eax
jz button
push dword check1
call [check_box_mouse]
push dword check2
call [check_box_mouse]
push dword check3
call [check_box_mouse]
push dword check4
call [check_box_mouse]
push dword check5
call [check_box_mouse]
push dword check6
call [check_box_mouse]
jmp still ;åñëè íè÷åãî èç ïåðå÷èñëåííîãî òî ñíîâà â öèêë
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
button:
mcall 17 ;ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êëàâèøè
test ah,ah ;åñëè â ah 0, òî ïåðåéòè íà îáðàáîò÷èê ñîáûòèé still
jz still
exit: mcall -1
key:
mcall 2 ;çàãðóçèì çíà÷åíèå 2 â ðåãèñòîð eax è ïîëó÷èì êîä íàæàòîé êëàâèøè
jmp still
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
align 4
draw_window: ;ðèñîâàíèå îêíà ïðèëîæåíèÿ
mcall 12,1
mcall 0,(50*65536+390),(30*65536+200),0x33AABBCC,0x805080DD,hed
push dword check1
call [check_box_draw]
push dword check2
call [check_box_draw]
push dword check3
call [check_box_draw]
push dword check4
call [check_box_draw]
push dword check5
call [check_box_draw]
push dword check6
call [check_box_draw]
mcall 12,2
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;DATA äàííûå
;Âñåãäà ñîáëþäàòü ïîñëåäîâàòåëüíîñòü â èìåíè.
system_path db '/sys/lib/'
library_name db 'box_lib.obj',0
; Åñëè åñòü æåëàíèå ðàçúåäèíèòü, òî íóæíî èñïîëüçîâàòü ñëåäóþùèþ êîíñòðóêöèþ
;system_path db '/sys/lib/box_lib.obj',0
;... ëþáàÿ ïîñëåäîâàòåëüíîñòü äðóãèõ êîìàíä è îïðåäåëåíèé.
;library_name db 'box_lib.obj',0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
err_message_found_lib db 'Sorry I cannot load library box_lib.obj',0
head_f_i:
head_f_l db 'System error',0
err_message_import db 'Error on load import library box_lib.obj',0
myimport:
init_checkbox dd aInit_checkbox
check_box_draw dd aCheck_box_draw
check_box_mouse dd aCheck_box_mouse
version_ch dd aVersion_ch
dd 0,0
aInit_checkbox db 'init_checkbox2',0
aCheck_box_draw db 'check_box_draw2',0
aCheck_box_mouse db 'check_box_mouse2',0
aVersion_ch db 'version_ch2',0
;---------------------------------------------------------------------
check1 check_box2 (10 shl 16 + 12),(10 shl 16 + 12),6,0xC0AABBCC,0,0x80000000,check_text,ch_flag_en
check2 check_box2 (10 shl 16 + 22),(25 shl 16 + 12),6,0xC0AABBCC,0,0x80000000,check_text2
check3 check_box2 (10 shl 16 + 12),(40 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text3
check4 check_box2 (10 shl 16 + 12),(70 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text4,ch_flag_top
check5 check_box2 (10 shl 16 + 12),(100 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text5,ch_flag_middle
check6 check_box2 (10 shl 16 + 12),(130 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text6,ch_flag_bottom
;---------------------------------------------------------------------
hed db 'CheckBox Exemples <Lrz> date 15.10.2010',0
hed_end:
;---------------------------------------------------------------------
check_text db 'First checkbox, set flag ch_flag_en',0
check_text2 db 'Second checkbox,not set any flag',0
check_text3 db 'Number 3 checkbox, not set any flag',0
check_text4 db 'Set flag is ch_flag_top',0
check_text5 db 'Set flag is ch_flag_middle',0
check_text6 db 'Set flag is ch_flag_bottom',0
;---------------------------------------------------------------------
MEM_END:
cur_dir_path rb 1024
library_path rb 1024
rb 1024 ;for stack
PRIL_END:

View File

@ -1,2 +0,0 @@
@fasm -m 16384 checkbox.asm checkbox.kex
if exist checkbox.kex @kpack checkbox.kex

View File

@ -1,155 +0,0 @@
;Последная модификация 03.10.2010
;файл создан 13.02.2009 <Lrz> На код применена GPL2 лицензия
;Макрос для системной библиотеки box_lib.obj
;Checkbox
;Инициализация checkbox
macro _init_checkbox2
{
init_checkbox2:
;подсчитаем кол-во символов в длинне выводимой строки.
pushad
mov ebp,dword [esp+36] ;загружаем указатель на структуру, указатель мы передаем в стеке
mov ebx,dword 2ch_text_margin ;eax=0
mov esi,dword 2ch_text_ptr ;указатель на строчку
lodsb ;в al первый символ из строки
test al,al
jz .ex_loop
@@:
add ebx,6 ;ширина символа
lodsb
test al,al
jnz @b
.ex_loop:
mov dword 2ch_sz_str,ebx ;запишим длинну строки с учетом отступа от квадратика
popad
ret 4
}
macro use_checkbox_draw2
{
check_box_draw2:
pushad ;сохраним все регистры
mov ebp,dword [esp+36] ;загружаем указатель на структуру, указатель мы передаем в стеке
mcall 13,2ch_left_s,2ch_top_s,2ch_border_color ;рисуем рамку чек бокса, фактически рисуем прямоугольник и закрашиваем фон внутри цветом рамки бокса
mov edx,dword 2ch_color ;загружаем цвет фона
add ebx,1 shl 16 - 2
add ecx,1 shl 16 - 2
mcall ;закрашиваем внутренности чекбокса фоном
test dword 2ch_flags,2 ;достать значение бита из переменной и поместить в флаг CF
jz @f ;в если CF=1, то выполним следующую процедуру иначе перейти на нижнюю @@
call check_box_draw_ch2 ;нарисовать включенный чек бокс
@@:
;----------------------------
;расчет куда будет произведен вывод текста
;----------------------------
; mov ebx,dword ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
; add ebx,dword ch_text_margin ;добавим размер стороны и расстояние на котором начнется вывод текста
; shl ebx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
; add ebx,dword ch_left_s ;cкорректируем позицию Х. Т.е. сейчас в верхней части ebx у нас точка начала вывода текста по Х
; mov eax,word ch_top_s ;загрузим значение по (y shl 16 + длинна) для чек бокса
; shr eax,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
; add eax,dword ch_top_s ;cкорректируем позицию Х. Т.е. сейчас в верхней части ebx у нас точка начала вывода текста по Y
; Оптимизация для ЦП
mov ebx,dword 2ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov eax,dword 2ch_top_s ;загрузим значение по (y shl 16 + длинна) для чек бокса
mov ecx,eax
add ebx,dword 2ch_text_margin ;добавим размер стороны и расстояние на котором начнется вывод текста
shr eax,16 ;сдвинем на 16 разрядов в право (разделим на 65536) в ax верхная точка
shl ebx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
sub ecx,8 ;корретировка учитываем высоту шрифта
test dword 2ch_flags,ch_flag_bottom ;проверим, нужно ли выводить вверху надпись
jnz .bottom
test dword 2ch_flags,ch_flag_middle ;проверим, нужно ли выводить в центр надпись
jz .top ;остался только top
shr cx,1 ;разделим на 2
.bottom:
add ax,cx
.top:
add ebx,dword 2ch_left_s ;cкорректируем позицию Х. Т.е. сейчас в верхней части ebx у нас точка начала вывода текста по Х
mov bx,ax
;ebx х shl 16 +y координаты вывода строчки
mov ecx,dword 2ch_text_color ;загрузим цвет надписи + flags
mov edx,dword 2ch_text_ptr ;укажем адрес от куда нужно выводить строку
mcall 4 ;Вывод
popad ;восстановить значения регистров из стека
ret 4 ;выйдем из процедуры и удалим из стека указатель на структуру (4 байта)
check_box_clear_ch2: ;очистка чек бокса
mov edx,dword 2ch_color ;цвет внутри чек бокса
jmp @f ;безусловный прыжок на нижнюю метку @@
check_box_draw_ch2: ;нарисовать включенный чек бокс
mov edx,dword 2ch_border_color ;загрузить цвет
@@:
;Отобразить включеный checkbox
mov ebx,dword 2ch_left_s ;загружаем х shl 16 + длинна по Х
mov ecx,dword 2ch_top_s ;загружаем Y shl 16 + длинна по Y
add ebx,2 shl 16 - 4 ;после этих изменений (X+2) shl 16 +длинна по (Х-2)
add ecx,2 shl 16 - 4 ;после этих изменений (Y+2) shl 16 +длинна по (Y-2)
mcall 13 ;отобразить квадрат внутри checkbox
ret
}
macro use_checkbox_mouse2
{
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Обработчик mouse
;При попадании мышки + нажата клавиша в область checkbox состояние бокса должно менятся активный - не активный.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
check_box_mouse2: ;обработка мыши
pushad
mov ebp,dword [esp+36] ;загружаем указатель на структуру, указатель мы передаем в стеке
mcall 37,2 ;проверяем состояние клавиш мышки. Было ли событие нажатая клавиша на мышке.
test eax,eax ;проверка если у нас в eax=0, выйдем
jz .check_box_mouse_end ;обработка закончилась
; Да событие: нажатие клавиши мышки произошло.
@@:
mcall 37,1 ;получить координаты курсора относительно окна
;на выходе в eax x shl 16 + y
;сравнение верхней точки по Y
mov ecx,dword 2ch_top_s ;y shl 16 +длинна по y
mov ebx,ecx
shr ebx,16 ;bx = координата по y
cmp ax,bx
jb .check_box_mouse_end ;указатель мышки меньше начальной координаты по y чем координата по Y у бокса
;сравнение нижней точки по Y
add cx,bx ;сложим длинну по y и координату верхней точки по y поличим координату нижней точки по Y
cmp ax,cx
ja .check_box_mouse_end ;указатель мышки больше конечной координаты по y чем координата по Y у бокса
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
shr eax,16 ;сместим координату по Х в нижную часть регистра т.е. в ax
;сравнение по начальной точке Х
mov ecx,dword 2ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov ebx,ecx
shr ebx,16 ;bx = координата по X
cmp ax,bx
jb .check_box_mouse_end ;указатель мышки меньше начальной координаты по X чем координата по X у бокса
;сравнение конечной точки по X
add bx,cx ;сложим длинну по x и координату точки по х получим координату конечной точки по Х
add bx,word 2ch_sz_str ;добавим длинну строки текста с отступом предвартиельно записав их в момент инициализации
cmp ax,bx
ja .check_box_mouse_end ;указатель мышки больше конечной координаты по х чем координата по Х у бокса
;если все проверки были успешно пройдены мы обязаны поменять состояние бокса
btc dword 2ch_flags,2 ;перенос 2-го бита в cf и инверсия его
jc .enable_box ;если CF=1 то отобразим включенный бокс и выйдем
push dword .check_box_mouse_end ;фокус -покус, вернемся после вызова check_box_clear_ch на метку check_box_mouse_end
jmp check_box_clear_ch2 ;выключить чек бокс т.е. на месте закрашенного прямоугольника отобразить цвет фона.
.enable_box:
call check_box_draw_ch2 ;отобразить включенный чек бокс
.check_box_mouse_end:
popad ;восстановить регистры из стека
ret 4 ;выйти и восстановим стек
}

View File

@ -1,5 +0,0 @@
# This is exeperemental source code for trunk, not stable.
# Это экспериментальные наброски, которые в дальнейшем будут включены в trunk.
# Причина появления: Мной была потеряна работа по изменению библиотеки box_lib, т.к. приходиться работать на разных ПК,
# в разное время, и в разных местах.
# <Lrz>, 03/10/2010.

View File

@ -1,4 +0,0 @@
if not exist bin mkdir bin
@fasm.exe -m 16384 box_lib.asm bin\box_lib.obj
@kpack bin\box_lib.obj
pause

View File

@ -1,7 +0,0 @@
include 'scrollbar.mac' ;macro implements scrollbar
include 'd_button.mac' ;macro implements dinamic_button
include 'menubar.mac' ;macro implements menubar
include 'filebrowser.mac' ;macro implements filebrowser
include 'pathshow.mac' ;macro implements pathshow
include 'frame.mac' ;macro implements frame
include 'progressbar.mac' ;macro implements progressbar

View File

@ -1,6 +1,6 @@
;*****************************************************************************
; Box_Lib - library of graphical components
; Copyright (C) KolibriOS team 2008-2016. All rights reserved.
; Copyright (C) KolibriOS team 2008-2020. All rights reserved.
;
; Authors:
; Alexey Teplov aka <Lrz>
@ -19,7 +19,6 @@ section '.flat' code readable align 16
include '../../../../macros.inc'
include '../../../../proc32.inc'
include '../../../../KOSfuncs.inc'
include 'bl_sys.mac'
include 'box_lib.mac' ;macro which should make life easier :)
;include '../../../../debug.inc'
include 'keys.inc'
@ -31,71 +30,20 @@ mem.realloc dd ? ;
dll.load dd ?
;----------------------------------------------------
;EditBox
include 'editbox.asm' ;editbox
;----------------------------------------------------
;CheckBox
include 'checkbox.asm' ;checkbox
;--------------------------------------------------
;radiobutton Group
include 'optionbox.asm' ;optionbox
;--------------------------------------------------
;scrollbar Group
;--------------------------------------------------
align 16
use_scroll_bar
align 16
use_scroll_bar_vertical
align 16
use_scroll_bar_horizontal
;--------------------------------------------------
;dinamic button Group
;--------------------------------------------------
align 16
use_dinamic_button
;--------------------------------------------------
;menubar Group
;--------------------------------------------------
align 16
use_menu_bar
;--------------------------------------------------
;filebrowser Group
;--------------------------------------------------
align 16
use_file_browser
;--------------------------------------------------
;tree list
include 'scrollbar.asm' ;scrollbar
include 'd_button.asm' ;dinamic_button
include 'menubar.asm' ;menubar
include 'filebrowser.asm' ;filebrowser
include 'tree_list.asm' ;tree_list, list_box
;--------------------------------------------------
;PathShow Group
;--------------------------------------------------
align 16
use_path_show
;--------------------------------------------------
;text editor
include 'pathshow.asm' ;pathshow
include 't_edit.asm' ;text_editor
;--------------------------------------------------
;Frame Group
;--------------------------------------------------
align 16
use_frame
;--------------------------------------------------
;ProgressBar
;--------------------------------------------------
use_progressbar
;--------------------------------------------------
include 'frame.asm' ;frame
include 'progressbar.asm' ;progressbar
include 'tooltip.asm' ;tooltip
;--------------------------------------------------
;input:
; eax = óêàçàòåëü íà ôóíêöèþ âûäåëåíèÿ ïàìÿòè
@ -115,18 +63,18 @@ align 4
proc draw_edge uses eax ebx ecx edx edi esi, box_l:dword, box_t:dword, box_w:dword, box_h:dword,\
col_0:dword, col_1:dword, col_2:dword
mov esi,dword[col_1]
mov esi,[col_1]
and esi,111111101111111011111110b
mov eax,SF_DRAW_RECT
;bottom line
mov edx,dword[col_2]
mov ebx,dword[box_l]
mov edx,[col_2]
mov ebx,[box_l]
shl ebx,16
add ebx,dword[box_w]
add ebx,[box_w]
inc ebx ;äëÿ çàëèâêè äèàãîíàëüíûõ ïèêñåëåé
mov ecx,dword[box_t]
add ecx,dword[box_h]
mov ecx,[box_t]
add ecx,[box_h]
shl ecx,16
inc ecx
@ -146,14 +94,14 @@ proc draw_edge uses eax ebx ecx edx edi esi, box_l:dword, box_t:dword, box_w:dwo
jnz @b
;right line
mov edx,dword[col_2]
mov ebx,dword[box_l]
add ebx,dword[box_w]
mov edx,[col_2]
mov ebx,[box_l]
add ebx,[box_w]
shl ebx,16
inc ebx
mov ecx,dword[box_t]
mov ecx,[box_t]
shl ecx,16
add ecx,dword[box_h]
add ecx,[box_h]
mov edi,3 ;for cycle
@@:
@ -171,11 +119,11 @@ proc draw_edge uses eax ebx ecx edx edi esi, box_l:dword, box_t:dword, box_w:dwo
jnz @b
;top line
mov edx,dword[col_0]
mov ebx,dword[box_l]
mov edx,[col_0]
mov ebx,[box_l]
shl ebx,16
add ebx,dword[box_w]
mov ecx,dword[box_t]
add ebx,[box_w]
mov ecx,[box_t]
shl ecx,16
inc ecx
@ -195,13 +143,13 @@ proc draw_edge uses eax ebx ecx edx edi esi, box_l:dword, box_t:dword, box_w:dwo
jnz @b
;left line
mov edx,dword[col_0]
mov ebx,dword[box_l]
mov edx,[col_0]
mov ebx,[box_l]
shl ebx,16
inc ebx
mov ecx,dword[box_t]
mov ecx,[box_t]
shl ecx,16
add ecx,dword[box_h]
add ecx,[box_h]
mov edi,3 ;for cycle
@@:
@ -235,9 +183,9 @@ dd sz_edit_box_mouse, edit_box_mouse
dd sz_edit_box_set_text, edit_box_set_text
dd szVersion_ed, 0x00000001
dd sz_init_checkbox2, init_checkbox2
dd sz_check_box_draw2, check_box_draw2
dd sz_check_box_mouse2, check_box_mouse2
dd sz_init_checkbox, init_checkbox
dd sz_check_box_draw, check_box_draw
dd sz_check_box_mouse, check_box_mouse
dd szVersion_ch2, 0x00000002
dd sz_option_box_draw, option_box_draw
@ -349,9 +297,9 @@ sz_edit_box_mouse db 'edit_box_mouse',0
sz_edit_box_set_text db 'edit_box_set_text',0
szVersion_ed db 'version_ed',0
sz_init_checkbox2 db 'init_checkbox2',0
sz_check_box_draw2 db 'check_box_draw2',0
sz_check_box_mouse2 db 'check_box_mouse2',0
sz_init_checkbox db 'init_checkbox2',0
sz_check_box_draw db 'check_box_draw2',0
sz_check_box_mouse db 'check_box_mouse2',0
szVersion_ch2 db 'version_ch2',0
sz_option_box_draw db 'option_box_draw',0

View File

@ -108,30 +108,22 @@ macro edit_boxes_set_sys_color start,end,color_table
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Basic macros for use CheckBox ;
;Last change 17.01.2013 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ch_text_margin equ [edi+8] ;=4 à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨
ch_color equ [edi+12] ;梥⠢­ãâਠcheckbox
ch_border_color equ [edi+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
ch_text_color equ [edi+20] ;[edi+4] ;梥â ⥪áâ 
ch_text_ptr equ [edi+24] ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨
ch_flags equ [edi+28] ;ä« £¨
ch_struc_size=36 ;à §¬¥à áâàãªâãàë
ch_flag_en=10b ;ä« £ ãáâ ­®¢«¥­­®£® 祪 ¡®ªá .
ch_flag_top=0x0 ;ä« £ à á¯®«®¦¥­¨ï ⥪áâ  ¢¢¥àåã â.¥. 3-© ¡¨â
ch_flag_middle=100b ;ä« £ à á¯®«®¦¥­¨ï ⥪áâ  ¢ 業âॠâ.¥. 4-© ¡¨â.
ch_flag_bottom=1000b ;ä« £ à á¯®«®¦¥­¨ï ⥪áâ  ¢ ­¨§ã â.¥. ¯® 㬮«ç ­¨î ¯à¨­¨¬ ¥âáï §­ ç¥­¨¥ ¢­¨§ã â.¥. ®âáãá⢨¥ 3-£® ¨ 4-£® ¡¨â 
2ch_left_s equ [ebp] ;ª®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
2ch_top_s equ [ebp+4] ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
2ch_text_margin equ [ebp+8] ;=4 à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨
2ch_color equ [ebp+12] ;梥⠢­ãâਠcheckbox
2ch_border_color equ [ebp+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
2ch_text_color equ [ebp+20] ;[edi+4] ;梥â ⥪áâ 
2ch_text_ptr equ [ebp+24] ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨
2ch_flags equ [ebp+28] ;ä« £¨
2ch_sz_str equ [ebp+32] ;¤«¨­­  áâப¨, ¢ëç¨á«ï¥âáï ¯à¨ ¨­¨æ¨ «¨§ æ¨¨ ª®¬¯®­¥­â 
ch_left_s equ [ebp] ;ª®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
ch_top_s equ [ebp+4] ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
ch_text_margin equ [ebp+8] ;=4 à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨
ch_color equ [ebp+12] ;梥⠢­ãâਠcheckbox
ch_border_color equ [ebp+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
ch_text_color equ [ebp+20] ;[edi+4] ;梥â ⥪áâ 
ch_text_ptr equ [ebp+24] ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨
ch_flags equ [ebp+28] ;ä« £¨
ch_sz_str equ [ebp+32] ;¤«¨­­  áâப¨, ¢ëç¨á«ï¥âáï ¯à¨ ¨­¨æ¨ «¨§ æ¨¨ ª®¬¯®­¥­â 
struc check_box2 left_s,top_s,ch_text_margin,color,border_color,text_color,text,flags
{ ;áâàãªâãà  ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá 
@ -143,7 +135,7 @@ struc check_box2 left_s,top_s,ch_text_margin,color,border_color,text_color,text,
.text_color dd text_color ;梥⠭ ¤¯¨á¨
.text dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à á¯®«®¦¥­ ⥪áâ
.flags dd flags+0 ;ä« £¨
.size_of_str dd 0x0 ;¤«¨­­  áâப¨, ¢ëç¨á«ï¥âáï ¯à¨ ¨­¨æ¨ «¨§ æ¨¨ ª®¬¯®­¥­â 
.size_of_str dd 0 ;¤«¨­­  áâப¨, ¢ëç¨á«ï¥âáï ¯à¨ ¨­¨æ¨ «¨§ æ¨¨ ª®¬¯®­¥­â 
}
;Œ ªà®á ¯à®¢¥àª¨ 饫窠 ¬ë誨 ­ ¤ £à㯯®© checkboxes.
@ -211,9 +203,9 @@ macro check_boxes_set_sys_color2 start,end,color_table
@@:
push dword [esi+32] ;梥â ⥪áâ  ¢ à ¡®ç¥© ®¡« á⨠®ª­ 
or dword [esp],0x80000000 ;­¥®¡å®¤¨¬® ¤«ï ¢ë¢®¤  ASCIIZ áâப
pop dword 2ch_text_color
pop dword ch_text_color
push dword [esi+36] ;梥⠣à ä¨ª¨ ¢ ®ª­¥ (à §¤¥«¨â¥«ì­ë¥ «¨­¨¨ ¨ â.¯.)
pop dword 2ch_border_color
pop dword ch_border_color
add ebp,ch_struc_size
loop @b
}

View File

@ -1,15 +1,15 @@
;Последная модификация 07.12.2016
;Последная модификация 08.12.2020
;файл создан 13.02.2009 <Lrz> На код применена GPL2 лицензия
;Checkbox
;Инициализация checkbox
align 16
init_checkbox2:
init_checkbox:
;подсчитаем кол-во символов в длинне выводимой строки.
pushad
mov ebp,dword [esp+36] ;загружаем указатель на структуру, указатель мы передаем в стеке
mov ebx,dword 2ch_text_margin ;eax=0
mov esi,dword 2ch_text_ptr ;указатель на строчку
mov ebx,dword ch_text_margin ;eax=0
mov esi,dword ch_text_ptr ;указатель на строчку
lodsb ;в al первый символ из строки
test al,al
jz .ex_loop
@ -20,27 +20,27 @@ init_checkbox2:
jnz @b
.ex_loop:
mov dword 2ch_sz_str,ebx ;запишем длинну строки с учетом отступа от квадратика
or dword 2ch_text_color,0x80000000 ;добавляем бит для вывода ASCIIZ-строки
mov dword ch_sz_str,ebx ;запишем длинну строки с учетом отступа от квадратика
or dword ch_text_color,0x80000000 ;добавляем бит для вывода ASCIIZ-строки
;на случай если пользователь забыл его самостоятельно поставить в структуре
popad
ret 4
align 16
check_box_draw2:
check_box_draw:
pushad ;сохраним все регистры
mov ebp,dword [esp+36] ;загружаем указатель на структуру, указатель мы передаем в стеке
mcall SF_DRAW_RECT,2ch_left_s,2ch_top_s,2ch_border_color ;рисуем рамку чек бокса, фактически рисуем прямоугольник и закрашиваем фон внутри цветом рамки бокса
mcall SF_DRAW_RECT,ch_left_s,ch_top_s,ch_border_color ;рисуем рамку чек бокса, фактически рисуем прямоугольник и закрашиваем фон внутри цветом рамки бокса
mov edx,dword 2ch_color ;загружаем цвет фона
mov edx,dword ch_color ;загружаем цвет фона
add ebx,1 shl 16 - 2
add ecx,1 shl 16 - 2
mcall ;закрашиваем внутренности чекбокса фоном
test dword 2ch_flags,2 ;достать значение бита из переменной и поместить в флаг CF
test dword ch_flags,2 ;достать значение бита из переменной и поместить в флаг CF
jz @f ;в если CF=1, то выполним следующую процедуру иначе перейти на нижнюю @@
call check_box_draw_ch2 ;нарисовать включенный чек бокс
call check_box_draw_ch ;нарисовать включенный чек бокс
@@:
;----------------------------
;расчет куда будет произведен вывод текста
@ -55,44 +55,44 @@ check_box_draw2:
; add eax,dword ch_top_s ;cкорректируем позицию Х. Т.е. сейчас в верхней части ebx у нас точка начала вывода текста по Y
; Оптимизация для ЦП
mov ebx,dword 2ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov eax,dword 2ch_top_s ;загрузим значение по (y shl 16 + длинна) для чек бокса
mov ebx,dword ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov eax,dword ch_top_s ;загрузим значение по (y shl 16 + длинна) для чек бокса
mov ecx,eax
add ebx,dword 2ch_text_margin ;добавим размер стороны и расстояние на котором начнется вывод текста
add ebx,dword ch_text_margin ;добавим размер стороны и расстояние на котором начнется вывод текста
shr eax,16 ;сдвинем на 16 разрядов в право (разделим на 65536) в ax верхная точка
shl ebx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
sub ecx,8 ;корретировка учитываем высоту шрифта
test dword 2ch_flags,ch_flag_bottom ;проверим, нужно ли выводить вверху надпись
test dword ch_flags,ch_flag_bottom ;проверим, нужно ли выводить вверху надпись
jnz .bottom
test dword 2ch_flags,ch_flag_middle ;проверим, нужно ли выводить в центр надпись
test dword ch_flags,ch_flag_middle ;проверим, нужно ли выводить в центр надпись
jz .top ;остался только top
shr cx,1 ;разделим на 2
.bottom:
add ax,cx
.top:
add ebx,dword 2ch_left_s ;cкорректируем позицию Х. Т.е. сейчас в верхней части ebx у нас точка начала вывода текста по Х
add ebx,dword ch_left_s ;cкорректируем позицию Х. Т.е. сейчас в верхней части ebx у нас точка начала вывода текста по Х
mov bx,ax
;ebx х shl 16 +y координаты вывода строчки
mov ecx,dword 2ch_text_color ;загрузим цвет надписи + flags
mov edx,dword 2ch_text_ptr ;укажем адрес от куда нужно выводить строку
mov ecx,dword ch_text_color ;загрузим цвет надписи + flags
mov edx,dword ch_text_ptr ;укажем адрес от куда нужно выводить строку
mcall SF_DRAW_TEXT
popad ;восстановить значения регистров из стека
ret 4 ;выйдем из процедуры и удалим из стека указатель на структуру (4 байта)
check_box_clear_ch2: ;очистка чек бокса
mov edx,dword 2ch_color ;цвет внутри чек бокса
check_box_clear_ch: ;очистка чек бокса
mov edx,dword ch_color ;цвет внутри чек бокса
jmp @f ;безусловный прыжок на нижнюю метку @@
check_box_draw_ch2: ;нарисовать включенный чек бокс
mov edx,dword 2ch_border_color ;загрузить цвет
check_box_draw_ch: ;нарисовать включенный чек бокс
mov edx,dword ch_border_color ;загрузить цвет
@@:
;Отобразить включеный checkbox
mov ebx,dword 2ch_left_s ;загружаем х shl 16 + длинна по Х
mov ecx,dword 2ch_top_s ;загружаем Y shl 16 + длинна по Y
mov ebx,dword ch_left_s ;загружаем х shl 16 + длинна по Х
mov ecx,dword ch_top_s ;загружаем Y shl 16 + длинна по Y
add ebx,2 shl 16 - 4 ;после этих изменений (X+2) shl 16 +длинна по (Х-2)
add ecx,2 shl 16 - 4 ;после этих изменений (Y+2) shl 16 +длинна по (Y-2)
mcall SF_DRAW_RECT ;отобразить квадрат внутри checkbox
@ -104,7 +104,7 @@ check_box_draw_ch2: ;
;При попадании мышки + нажата клавиша в область checkbox состояние бокса должно менятся активный - не активный.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
align 16
check_box_mouse2: ;обработка мыши
check_box_mouse: ;обработка мыши
pushad
mov ebp,dword [esp+36] ;загружаем указатель на структуру, указатель мы передаем в стеке
mcall SF_MOUSE_GET,SSF_BUTTON ;проверяем состояние клавиш мышки. Было ли событие нажатая клавиша на мышке.
@ -115,7 +115,7 @@ pushad
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;получить координаты курсора относительно окна
;на выходе в eax x shl 16 + y
;сравнение верхней точки по Y
mov ecx,dword 2ch_top_s ;y shl 16 +длинна по y
mov ecx,dword ch_top_s ;y shl 16 +длинна по y
mov ebx,ecx
shr ebx,16 ;bx = координата по y
cmp ax,bx
@ -127,24 +127,24 @@ pushad
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
shr eax,16 ;сместим координату по Х в нижную часть регистра т.е. в ax
;сравнение по начальной точке Х
mov ecx,dword 2ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov ecx,dword ch_left_s ;загрузить значение (х shl 16 + длинна) для чек бокса
mov ebx,ecx
shr ebx,16 ;bx = координата по X
cmp ax,bx
jb .check_box_mouse_end ;указатель мышки меньше начальной координаты по X чем координата по X у бокса
;сравнение конечной точки по X
add bx,cx ;сложим длинну по x и координату точки по х получим координату конечной точки по Х
add bx,word 2ch_sz_str ;добавим длинну строки текста с отступом предвартиельно записав их в момент инициализации
add bx,word ch_sz_str ;добавим длинну строки текста с отступом предвартиельно записав их в момент инициализации
cmp ax,bx
ja .check_box_mouse_end ;указатель мышки больше конечной координаты по х чем координата по Х у бокса
;если все проверки были успешно пройдены мы обязаны поменять состояние бокса
btc dword 2ch_flags,1 ;перенос 2-го бита в cf и инверсия его
btc dword ch_flags,1 ;перенос 2-го бита в cf и инверсия его
jnc .enable_box ;если CF=1 то отобразим включенный бокс и выйдем
push dword .check_box_mouse_end ;фокус -покус, вернемся после вызова check_box_clear_ch на метку check_box_mouse_end
jmp check_box_clear_ch2 ;выключить чек бокс т.е. на месте закрашенного прямоугольника отобразить цвет фона.
jmp check_box_clear_ch ;выключить чек бокс т.е. на месте закрашенного прямоугольника отобразить цвет фона.
.enable_box:
call check_box_draw_ch2 ;отобразить включенный чек бокс
call check_box_draw_ch ;отобразить включенный чек бокс
.check_box_mouse_end:
popad ;восстановить регистры из стека
ret 4 ;выйти и восстановим стек

View File

@ -31,8 +31,7 @@ popa
ret 4
}
;*****************************************************************************
macro use_dinamic_button
{
align 16
dinamic_button:
db_type equ [edi]
db_size_x equ [edi+4]
@ -89,7 +88,7 @@ dinamic_button_exit
push edi
mov edi,db_palette_raw
mcall 65
mcall SF_PUT_IMAGE_EXT
pop edi
ret
;*****************************************************************************
@ -97,16 +96,17 @@ dinamic_button_exit
; mouse event
;*****************************************************************************
;*****************************************************************************
align 4
.mouse:
pusha
mov edi,dword [esp+36]
mcall 37,2
mcall SF_MOUSE_GET,SSF_BUTTON
mov ebx,db_mouse_keys
mov db_mouse_keys_old,ebx
mov db_mouse_keys,eax
mcall 37,1
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov db_mouse_pos,eax
test eax,0x80000000
@ -149,7 +149,7 @@ dinamic_button_exit
mov db_select,dword 2
call .draw_1
mcall 5, 25
mcall SF_SLEEP, 25
mov db_select,dword 1
call .draw_1
@ -167,4 +167,3 @@ dinamic_button_exit
; mov db_click,dword 0
.exit_menu_2:
dinamic_button_exit
}

View File

@ -32,9 +32,6 @@ popa
ret 4
}
;*****************************************************************************
macro use_file_browser
{
file_browser:
fb_type equ dword [edi] ;dword
fb_size_x equ [edi+4] ;word
fb_start_x equ [edi+6] ;word
@ -97,6 +94,7 @@ fb_mouse_pos_old equ dword [edi+196] ;dword
fb_marked_counter equ dword [edi+200] ;dword
fb_keymap_pointer equ dword [edi+204] ;dword
;---------------------------------------------------------------------
align 16
fb_draw_panel:
pusha
mov edi,dword [esp+36]
@ -134,6 +132,7 @@ fb_draw_panel_1:
popa
ret
;---------------------------------------------------------------------
align 4
fb_clear_panel:
cmp fb_all_redraw,1
jne @f
@ -142,12 +141,14 @@ fb_clear_panel:
@@:
ret
;---------------------------------------------------------------------
align 4
fb_calc_folder_sysdata:
mov eax,fb_folder_data
mov eax,[eax+4]
mov fb_folder_block,eax
ret
;---------------------------------------------------------------------
align 4
fb_calc_max_panel_line:
xor eax,eax
xor ebx,ebx
@ -162,6 +163,7 @@ fb_calc_max_panel_line:
mov fb_max_panel_line,eax
ret
;---------------------------------------------------------------------
align 4
fb_draw_panel_selection:
cmp fb_all_redraw,2
je .end
@ -197,16 +199,17 @@ fb_draw_panel_selection:
shl eax,16
push eax
add ebx,eax
mcall 13
mcall SF_DRAW_RECT
pop ebx
cmp fb_all_redraw,0
je .end
mov bx,fb_start_x
ror ebx,16
mcall 13,,,fb_background_color
mcall SF_DRAW_RECT,,,fb_background_color
.end:
ret
;---------------------------------------------------------------------
align 4
fb_for_all_panel_selection:
xor edx,edx
mov dx,fb_line_size_y
@ -224,6 +227,7 @@ fb_for_all_panel_selection:
@@:
ret
;---------------------------------------------------------------------
align 4
fb_draw_folder_data:
mov eax,fb_folder_block
sub eax,fb_max_panel_line
@ -325,7 +329,7 @@ fb_draw_folder_data:
mov esi,2
mov ecx,fb_reduct_text_color
mov edx,dword fb_truncated_filename_char
mcall 4
mcall SF_DRAW_TEXT
pop edx
.continue:
pop ebx
@ -335,6 +339,7 @@ fb_draw_folder_data:
inc eax
jmp .start
;--------------------------------------
align 4
.draw_name_temp_area:
pusha
mov eax,fb_max_name_temp_size
@ -370,7 +375,7 @@ fb_draw_folder_data:
mov eax,fb_select_color
@@:
mov edi,eax
mcall 4
mcall SF_DRAW_TEXT
popa
ret
;--------------------------------------
@ -395,10 +400,11 @@ fb_draw_folder_data:
sub bx,3
rol ebx,16
mov edx,fb_background_color ;0xffffff
mcall 13
mcall SF_DRAW_RECT
@@:
ret
;---------------------------------------------------------------------
align 4
fb_clear_line:
mov fb_draw_panel_selection_flag,0
pusha
@ -426,12 +432,12 @@ fb_clear_line:
sub bx,fb_icon_size_x
sub bx,3
rol ebx,16
mov edx,fb_background_color
mcall 13
mcall SF_DRAW_RECT,,,fb_background_color
.end:
popa
ret
;---------------------------------------------------------------------
align 4
fb_draw_type_size_date:
pusha
mov eax,fb_type_table
@ -503,6 +509,7 @@ fb_draw_type_size_date:
mov [eax+6+4],word '- '
jmp .date
;-----------------------------------------
align 4
.call_decimal_string:
mov ebx,fb_type_table
add ebx,6
@ -510,14 +517,14 @@ fb_draw_type_size_date:
mov [ebx],dl
jmp .size_convert_end
;-----------------------------------------
align 4
.copy_size:
;/0x40000000 - Gb
;/0x100000 - Mb
;/0x400 Kb
mov [eax+6],dword ' '
mov [eax+6+4],word ' '
push ebx
push edx
push ebx edx
mov eax,[edx-40+32]
mov ebx,eax
shr eax,30 ; /(1024*1024*1024)
@ -565,8 +572,7 @@ fb_draw_type_size_date:
jmp @r
@@:
pop edi
pop edx
pop ebx
pop edx ebx
;-----------------------------------------
.date:
xor eax,eax
@ -617,10 +623,11 @@ fb_draw_type_size_date:
mov eax,fb_select_color
@@:
mov edi,eax
mcall 4
mcall SF_DRAW_TEXT
popa
ret
;---------------------------------------------------------------------
align 4
fb_draw_icon:
pusha
xor eax,eax
@ -663,7 +670,7 @@ fb_draw_icon:
xor ebp,ebp
push edi
mov edi,fb_palette_raw
mcall 65
mcall SF_PUT_IMAGE_EXT
pop edi
popa
ret
@ -674,6 +681,7 @@ fb_draw_icon:
; EBX - address of string
; Output:
; string contains the number, marked the end of the code 0
align 4
fb_decimal_string_2:
push eax ebx ecx edx
xor ecx,ecx
@ -702,6 +710,7 @@ fb_decimal_string_2:
pop edx ecx ebx eax
ret
;---------------------------------------------------------------------
align 4
fb_decimal_string_4:
push eax ecx edx
xor ecx,ecx
@ -730,6 +739,7 @@ fb_decimal_string_4:
pop edx ecx eax
ret
;---------------------------------------------------------------------
align 4
fb_get_icon_number:
push eax
mov ebp,fb_extension_size
@ -811,6 +821,7 @@ fb_get_icon_number:
pop eax
ret
;---------------------------------------------------------------------
align 4
.calculate_1:
add ebx,eax
.calculate:
@ -819,6 +830,7 @@ fb_get_icon_number:
lodsb
ret
;---------------------------------------------------------------------
align 4
fb_char_toupper:
; convert character to uppercase, using cp866 encoding
; in: al=symbol
@ -843,6 +855,7 @@ fb_char_toupper:
and al, not 0x20
ret
;---------------------------------------------------------------------
align 4
fb_char_todown:
; convert character to lowercase, using cp866 encoding
; in: al=symbol
@ -875,16 +888,17 @@ fb_truncated_filename_char:
; mouse event
;*****************************************************************************
;*****************************************************************************
align 4
fb_mouse:
pusha
mov edi,dword [esp+36]
;-------------------------------------------------------
mcall 37,2
mcall SF_MOUSE_GET,SSF_BUTTON
mov ebx,fb_mouse_keys
mov fb_mouse_keys_old,ebx
mov fb_mouse_keys,eax
mcall 37,1
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov ebx,fb_mouse_pos
mov fb_mouse_pos_old,ebx
mov fb_mouse_pos,eax
@ -999,12 +1013,12 @@ fb_mouse:
jne .mark_mouse
mov edx,2
mov fb_mouse_keys_delta,edx
mcall 26,9
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
add eax,fb_mouse_key_delay
mov fb_mouse_keys_tick,eax
jmp .continue_2
.enter_2:
mcall 26,9
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
cmp eax,fb_mouse_keys_tick
ja @f
; mov eax,fb_mouse_pos_old
@ -1026,6 +1040,7 @@ fb_mouse:
call fb_prepare_selected_BDVK_adress
file_browser_exit
;-------------------------------------------------------
align 4
.mark_mouse:
call fb_key.mark_1
call fb_draw_panel_1
@ -1033,6 +1048,7 @@ file_browser_exit
mov fb_mouse_keys_delta,eax
jmp .exit_fb
;-------------------------------------------------------
align 4
.enter_3:
xor eax,eax
mov fb_mouse_keys,eax
@ -1043,6 +1059,7 @@ file_browser_exit
mov fb_max_name_temp_size,eax
ret
;-------------------------------------------------------
align 4
.store_old_cursor_line:
push eax
mov ax,fb_start_draw_cursor_line
@ -1053,6 +1070,7 @@ file_browser_exit
ret
;*****************************************************************************
;*****************************************************************************
align 4
fb_prepare_selected_BDVK_adress:
xor eax,eax
mov ax,fb_start_draw_cursor_line
@ -1083,6 +1101,7 @@ fb_prepare_selected_BDVK_adress:
; 12 - Search with key
;*****************************************************************************
;*****************************************************************************
align 4
fb_key:
pusha
mov edi,dword [esp+36]
@ -1097,6 +1116,7 @@ fb_key:
je .exit_fb
jmp dword [eax]
;-------------------------------------------------------
align 4
.arrow_down:
mov ax,fb_start_draw_cursor_line
add ax,fb_line_size_y
@ -1126,6 +1146,7 @@ fb_key:
call fb_draw_panel_3
jmp .exit_fb
;-------------------------------------------------------
align 4
.arrow_up:
mov ax,fb_start_draw_cursor_line
add ax,fb_start_y
@ -1144,6 +1165,7 @@ fb_key:
call fb_draw_panel_3
jmp .exit_fb
;-------------------------------------------------------
align 4
.page_down:
mov eax,fb_max_panel_line
mov ebx,fb_folder_block
@ -1186,6 +1208,7 @@ fb_key:
call fb_draw_panel_2
jmp .exit_fb
;-------------------------------------------------------
align 4
.prepare_data_down:
mov ecx,fb_folder_block
sub ecx,fb_start_draw_line
@ -1196,6 +1219,7 @@ fb_key:
cmp cx,fb_start_draw_cursor_line
ret
;-------------------------------------------------------
align 4
.page_up:
mov eax,fb_max_panel_line
mov ebx,fb_start_draw_line
@ -1216,6 +1240,7 @@ fb_key:
call fb_draw_panel_2
jmp .exit_fb
;-------------------------------------------------------
align 4
.home:
cmp fb_start_draw_line,0
jne @f
@ -1228,6 +1253,7 @@ fb_key:
call fb_draw_panel_2
jmp .exit_fb
;-------------------------------------------------------
align 4
.end:
mov eax,fb_folder_block
sub eax,fb_max_panel_line
@ -1242,14 +1268,17 @@ fb_key:
mov eax,fb_max_panel_line
jmp .page_down_0
;-------------------------------------------------------
align 4
.enter:
call fb_mouse.enter_3
jmp .exit_fb
;-------------------------------------------------------
align 4
.mark:
call .mark_1
jmp .arrow_down
;-------------------------------------------------------
align 4
.mark_1:
mov eax,fb_folder_block
test eax,eax
@ -1284,6 +1313,7 @@ fb_key:
.exit:
ret
;-------------------------------------------------------
align 4
.mark_all:
mov eax,fb_folder_block
test eax,eax
@ -1326,6 +1356,7 @@ fb_key:
mov fb_marked_counter,eax
jmp .exit_fb
;-------------------------------------------------------
align 4
.select_mark_action:
add ebx,299-40
cmp fb_temp_counter,0
@ -1345,6 +1376,7 @@ fb_key:
.select_mark_action_1:
ret
;-------------------------------------------------------
align 4
.unmark_all:
mov eax,fb_folder_block
test eax,eax
@ -1353,6 +1385,7 @@ fb_key:
mov fb_temp_counter,1
jmp .mark_all_1
;-------------------------------------------------------
align 4
.invert_mark:
mov eax,fb_folder_block
test eax,eax
@ -1373,8 +1406,9 @@ fb_key:
; * bit 9 (mask 0x200): left Win is pressed
; * bit 10 (mask 0x400): right Win is pressed
;-------------------------------------------------------
align 4
.search_with_key:
mcall 66,3
mcall SF_BOARD,SSF_GET_CONTROL_KEYS
test al,11b
jnz .shift_layout
@ -1391,7 +1425,7 @@ fb_key:
.alt_layout:
mov ecx,3 ; Alt
.get_keyboard_layout:
mcall 26,2,,fb_keymap_pointer
mcall SF_SYSTEM_GET,SSF_KEYBOARD_LAYOUT,,fb_keymap_pointer
xor eax,eax
mov ax,fb_key_action_num
add eax,fb_keymap_pointer
@ -1474,6 +1508,7 @@ fb_key:
call fb_prepare_selected_BDVK_adress
file_browser_exit
;-------------------------------------------------------
align 4
fb_key_table:
dd 0
dd fb_key.arrow_down ; 1
@ -1491,10 +1526,12 @@ fb_key_table:
.end:
dd 0
;-------------------------------------------------------
align 4
fb_draw_panel_3:
mov eax,2
mov fb_all_redraw,eax
jmp fb_draw_panel_2.1
align 4
fb_draw_panel_2:
xor eax,eax
inc eax
@ -1508,4 +1545,3 @@ fb_draw_panel_2:
mov fb_draw_scroll_bar,eax
ret
}

View File

@ -40,8 +40,6 @@ popa
ret 4
}
;*****************************************************************************
macro use_frame
{
fr equ [esp + 36]
frame:
fr_type equ [eax + FR_STYLE] ; dword
@ -63,7 +61,7 @@ fr_font_backgr_color equ [eax + FR_BACK_COLOR] ; dword
; draw event
;*****************************************************************************
;*****************************************************************************
align 4
align 16
.draw:
frame_start
mov eax, fr
@ -261,10 +259,9 @@ align 4
.draw_1:
mov edx,fr_text_pointer
mov edi,fr_font_backgr_color
mcall 4
mcall SF_DRAW_TEXT
;----------------------------------------------------------------------
align 4
.exit:
frame_exit
}
;*****************************************************************************

View File

@ -31,8 +31,7 @@ popa
ret 4
}
;*****************************************************************************
macro use_menu_bar
{
align 16
menu_bar:
m_type equ [edi]
m_size_x equ [edi+4]
@ -94,7 +93,7 @@ m_get_mouse_flag equ [edi+116]
.active:
mov edx,m_frnt_col
@@:
mcall 13
mcall SF_DRAW_RECT
shr ecx,16
mov bx,cx
movzx eax,word m_size_y
@ -109,14 +108,11 @@ m_get_mouse_flag equ [edi+116]
add ecx,0x80000000
@@:
mov edx,m_text_pointer
mcall 4
mcall SF_DRAW_TEXT
ret
.draw_2:
mov ebx,m_size_x1
mov ecx,m_size_y1
mov edx,m_menu_col
mcall 13
mcall SF_DRAW_RECT,m_size_x1,m_size_y1,m_menu_col
ret
.calculate_font_offset:
@ -136,8 +132,7 @@ m_get_mouse_flag equ [edi+116]
shl eax,16
add ecx,eax
mov cx,m_interval
mov edx,m_menu_col
mcall 13
mcall SF_DRAW_RECT,,,m_menu_col
pop ecx ebx
push ebx ecx
@ -147,7 +142,7 @@ m_get_mouse_flag equ [edi+116]
add ecx,eax
mov cx,m_interval
mov edx,m_menu_sel_col
mcall 13
mcall SF_DRAW_RECT
pop ecx ebx
shr ecx,16
@ -169,7 +164,7 @@ m_get_mouse_flag equ [edi+116]
add ecx,0xC0000000
push edi
mov edi,eax
mcall 4
mcall SF_DRAW_TEXT
pop edi
call .get_next_text
inc ebp
@ -277,7 +272,7 @@ m_get_mouse_flag equ [edi+116]
.red:
call .draw_3
.still:
mcall 10
mcall SF_WAIT_EVENT
cmp eax,1
je .exit_menu_3
cmp eax,2
@ -289,7 +284,7 @@ m_get_mouse_flag equ [edi+116]
jmp .still
.key_menu:
mcall 2
mcall SF_GET_KEY
cmp dword m_extended_key,1
je .extended_key
@ -442,12 +437,12 @@ m_get_mouse_flag equ [edi+116]
jmp .exit_menu_3
;---------------------------------------------------------------------
.processing_real_mouse:
mcall 37,2
mcall SF_MOUSE_GET,SSF_BUTTON
mov ebx,m_mouse_keys
mov m_mouse_keys_old,ebx
mov m_mouse_keys,eax
mcall 37,1
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
ret
;---------------------------------------------------------------------
.allocate_menu_area:
@ -456,21 +451,21 @@ m_get_mouse_flag equ [edi+116]
movzx eax,word m_size_y1
imul ecx,eax
lea ecx,[ecx*3]
mcall 68, 12
mcall SF_SYS_MISC,SSF_MEM_ALLOC
mov m_buf_adress,eax
ret
;---------------------------------------------------------------------
.free_menu_area:
cmp dword m_buf_adress,0
je @f
mcall 68,13,m_buf_adress
mcall SF_SYS_MISC,SSF_MEM_FREE,m_buf_adress
xor eax,eax
mov m_buf_adress,eax
@@:
ret
;---------------------------------------------------------------------
.get_menu_area:
mcall 9, m_procinfo,-1
mcall SF_THREAD_INFO, m_procinfo,-1
mov cx,m_size_x1
shl ecx,16
@ -485,7 +480,7 @@ m_get_mouse_flag equ [edi+116]
add dx,[eax+38]
add dx,[eax+58]
mcall 36, m_buf_adress
mcall SF_GET_IMAGE, m_buf_adress
ret
;---------------------------------------------------------------------
.put_menu_area:
@ -497,7 +492,7 @@ m_get_mouse_flag equ [edi+116]
shl edx,16
mov dx,m_start_y1
mcall 7, m_buf_adress
mcall SF_PUT_IMAGE, m_buf_adress
call .free_menu_area
ret
;---------------------------------------------------------------------
@ -601,5 +596,3 @@ m_get_mouse_flag equ [edi+116]
mov m_click,dword 0
@@:
menu_bar_exit
}

View File

@ -37,8 +37,7 @@ popa
ret 4
}
;*****************************************************************************
macro use_path_show
{
align 16
path_show:
ps_type equ [edi] ;dword
ps_start_y equ [edi+4] ;word
@ -146,7 +145,6 @@ path_show_start
and eax,0xffffff
xor esi,esi
mov edi,eax
mcall 4
mcall SF_DRAW_TEXT
path_show_exit
}
;*****************************************************************************

View File

@ -1,5 +1,3 @@
macro use_progressbar
{
pb equ [esp + 4 + 8*4]
align 16
progressbar_draw:
@ -15,7 +13,7 @@ progressbar_draw:
add esi, edi
dec ebp
dec esi
mov eax, 38
mov eax, SF_DRAW_LINE
shl ebx, 16
mov bx, bp
shrd ecx, edi, 16
@ -54,7 +52,7 @@ progressbar_draw:
add ebx, edi
add ecx, [eax + PB_HEIGHT]
dec ecx
mov eax, 13
mov eax, SF_DRAW_RECT
dec ecx
int 64
; draw last part of non-progress rectangle
@ -133,11 +131,10 @@ progressbar_progress:
add ebx, esi
dec ecx
sub ebx, edi
mov eax, 13
mov eax, SF_DRAW_RECT
dec ecx
int 64
; .skip:
popad
ret 4
restore pb
}

View File

@ -53,8 +53,7 @@ macro draw_up_arrow_vertical
sub ebx,4 shl 16
mov bx,7
mov cx,1
mov eax,13
int 0x40
mcall SF_DRAW_RECT
sub ecx,1 shl 16
add ebx,1 shl 16
mov bx,5
@ -98,7 +97,7 @@ macro draw_up_arrow_vertical_type2
add cx,1
sub bx,3
mcall 38,,,sb_line_col
mcall SF_DRAW_LINE,,,sb_line_col
add bx,6
@ -127,8 +126,7 @@ macro draw_down_arrow_vertical
mov bx,7
sub ecx,2 shl 16
mov cx,1
mov eax,13
int 0x40
mcall SF_DRAW_RECT
add ecx,1 shl 16
add ebx,1 shl 16
mov bx,5
@ -174,7 +172,7 @@ macro draw_down_arrow_vertical_type2
sub cx,2
sub bx,3
mcall 38,,,sb_line_col
mcall SF_DRAW_LINE,,,sb_line_col
add bx,6
@ -184,8 +182,7 @@ macro draw_down_arrow_vertical_type2
;*****************************************************************************
macro draw_runner_center_vertical
{
push ebx
push ecx
push ebx ecx
xor eax,eax
mov ax,sb_size_x
@ -203,8 +200,7 @@ macro draw_runner_center_vertical
mov bx,10
add ecx,4 shl 16
mov cx,1
mov eax,13
int 0x40
mcall SF_DRAW_RECT
add ecx,3 shl 16
sub ebx,1 shl 16
mov bx,12
@ -213,8 +209,7 @@ macro draw_runner_center_vertical
mov bx,10
add ecx,3 shl 16
int 0x40
pop ecx
pop ebx
pop ecx ebx
}
;*****************************************************************************
macro draw_up_arrow_horizontal
@ -238,8 +233,7 @@ macro draw_up_arrow_horizontal
mov cx,7
mov bx,1
mov eax,13
int 0x40
mcall SF_DRAW_RECT
sub ebx,1 shl 16
add ecx,1 shl 16
mov cx,5
@ -283,7 +277,7 @@ macro draw_up_arrow_horizontal_type2
add bx,1
sub cx,3
mcall 38,,,sb_line_col
mcall SF_DRAW_LINE,,,sb_line_col
add cx,6
@ -312,8 +306,7 @@ macro draw_down_arrow_horizontal
mov cx,7
sub ebx,2 shl 16
mov bx,1
mov eax,13
int 0x40
mcall SF_DRAW_RECT
add ebx,1 shl 16
add ecx,1 shl 16
mov cx,5
@ -359,7 +352,7 @@ macro draw_down_arrow_horizontal_type2
sub cx,2
sub bx,3
mcall 38,,,sb_line_col
mcall SF_DRAW_LINE,,,sb_line_col
add cx,6
@ -369,8 +362,7 @@ macro draw_down_arrow_horizontal_type2
;*****************************************************************************
macro draw_runner_center_horizontal
{
push ebx
push ecx
push ebx ecx
xor eax,eax
mov ax,sb_size_y
@ -388,8 +380,7 @@ macro draw_runner_center_horizontal
mov cx,10
add ebx,4 shl 16
mov bx,1
mov eax,13
int 0x40
mcall SF_DRAW_RECT
add ebx,3 shl 16
sub ecx,1 shl 16
mov cx,12
@ -398,13 +389,9 @@ macro draw_runner_center_horizontal
mov cx,10
add ebx,3 shl 16
int 0x40
pop ecx
pop ebx
pop ecx ebx
}
;*****************************************************************************
macro use_scroll_bar
{
scroll_bar:
sb_size_x equ [edi]
sb_start_x equ [edi+2]
sb_size_y equ [edi+4]
@ -432,14 +419,13 @@ sb_position2 equ [edi+72]
sb_work_size equ [edi+76]
sb_all_redraw equ [edi+80]
sb_ar_offset equ [edi+84]
}
;*****************************************************************************
;*****************************************************************************
; draw event
;*****************************************************************************
;*****************************************************************************
macro use_scroll_bar_vertical
{
align 16
scroll_bar_vertical:
.draw:
pusha
@ -520,7 +506,7 @@ scroll_bar_exit
inc ebx
mov ecx,sb_size_y
mov edx,sb_line_col
mov eax,13
mov eax,SF_DRAW_RECT
cmp dword sb_all_redraw,0
je @f
int 0x40 ; left extreme line
@ -574,7 +560,7 @@ draw_up_arrow_vertical
mov edx,sb_line_col
cmp dword sb_all_redraw,0
je @f
mcall 13 ; top button - bottom line
mcall SF_DRAW_RECT ; top button - bottom line
@@:
pop ecx
;*********************************
@ -588,7 +574,7 @@ draw_up_arrow_vertical
mov cx,0
add ecx,sb_position2
dec cx
mov eax,13
mov eax,SF_DRAW_RECT
test cx,0x8000
jnz @f
mov edx,sb_bckg_col
@ -655,8 +641,7 @@ draw_runner_center_vertical
test cx,0x8000
jnz @f
mov edx,sb_bckg_col
mov eax,13
int 0x40 ; bottom interval
mcall SF_DRAW_RECT ; bottom interval
@@:
pop ecx
;*********************************
@ -667,7 +652,7 @@ draw_runner_center_vertical
shl ecx,16
inc ecx
mov edx,sb_line_col
mov eax,13
mov eax,SF_DRAW_RECT
cmp dword sb_all_redraw,0
je @f
int 0x40 ; bottom button - top line
@ -703,7 +688,7 @@ draw_down_arrow_vertical
mov cx,1
cmp dword sb_all_redraw,0
je @f
mcall 13 ; bottom button - extreme line
mcall SF_DRAW_RECT ; bottom button - extreme line
;-----------------------------------------------------------------------------
; scrollbar type 1 - stylish frame
cmp word sb_type,1
@ -732,14 +717,14 @@ draw_down_arrow_vertical
.mouse:
pusha
mov edi,dword [esp+36]
mcall 37,1
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov sb_m_pos,eax
cmp dword sb_m_pos_2,0
jne @f
mov sb_m_pos_2,eax
@@:
mcall 37,2
mcall SF_MOUSE_GET,SSF_BUTTON
mov sb_m_keys,eax
cmp sb_m_keys,eax
@ -1031,15 +1016,14 @@ draw_down_arrow_vertical
jmp .all_sb
.exit_sb:
scroll_bar_exit
}
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
macro use_scroll_bar_horizontal
{
align 16
scroll_bar_horizontal:
.draw:
pusha
@ -1121,7 +1105,7 @@ scroll_bar_exit
shl ecx,16
inc ecx
mov edx,sb_line_col
mov eax,13
mov eax,SF_DRAW_RECT
cmp dword sb_all_redraw,0
je @f
int 0x40 ; top extreme line
@ -1175,7 +1159,7 @@ draw_up_arrow_horizontal
mov edx,sb_line_col
cmp dword sb_all_redraw,0
je @f
mcall 13 ; left button - right line
mcall SF_DRAW_RECT ; left button - right line
@@:
pop ebx
;*********************************
@ -1189,7 +1173,7 @@ draw_up_arrow_horizontal
mov bx,0
add ebx,sb_position2
dec bx
mov eax,13
mov eax,SF_DRAW_RECT
test bx,0x8000
jnz @f
mov edx,sb_bckg_col
@ -1257,8 +1241,7 @@ draw_runner_center_horizontal
test bx,0x8000
jnz @f
mov edx,sb_bckg_col
mov eax,13
int 0x40 ; bottom interval
mcall SF_DRAW_RECT ; bottom interval
@@:
pop ebx
;*********************************
@ -1269,7 +1252,7 @@ draw_runner_center_horizontal
shl ebx,16
inc ebx
mov edx,sb_line_col
mov eax,13
mov eax,SF_DRAW_RECT
cmp dword sb_all_redraw,0
je @f
int 0x40 ; bottom button - top line
@ -1305,7 +1288,7 @@ draw_down_arrow_horizontal
mov bx,1
cmp dword sb_all_redraw,0
je @f
mcall 13 ; bottom button - extreme line
mcall SF_DRAW_RECT ; bottom button - extreme line
;-----------------------------------------------------------------------------
; scrollbar type 1 - stylish frame
cmp word sb_type,1
@ -1334,14 +1317,14 @@ draw_down_arrow_horizontal
.mouse:
pusha
mov edi,dword [esp+36]
mcall 37,1
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov sb_m_pos,eax
cmp dword sb_m_pos_2,0
jne @f
mov sb_m_pos_2,eax
@@:
mcall 37,2
mcall SF_MOUSE_GET,SSF_BUTTON
mov sb_m_keys,eax
cmp sb_m_keys,eax
@ -1641,4 +1624,3 @@ draw_down_arrow_horizontal
;*****************************************************************************
.exit_sb:
scroll_bar_exit
}

View File

@ -7,7 +7,7 @@ include '../../../macros.inc'
include '../../../proc32.inc'
include '../../../KOSfuncs.inc'
include '../../../load_img.inc'
include '../../../develop/libraries/box_lib/load_lib.mac'
include '../../../load_lib.mac'
;include 'lang.inc'
@ -603,8 +603,8 @@ pole_next_gen:
add edi,[memCell] ;edi -> &memCell[fristC]
mov esi,[edi] ;swp=memCell[fristC];
mov edx,[ecx] ;edx - 㦥 ­¥ ¨á¯®«ì§ã¥¬, ¯®â®¬ã ¬®¦¥¬ ¯®àâ¨âì
mov dword[edi],edx ;memCell[fristC]=memCell[i];
mov dword[ecx],esi ;memCell[i]=swp;
mov [edi],edx ;memCell[fristC]=memCell[i];
mov [ecx],esi ;memCell[i]=swp;
dec eax
dec ebx
sub ecx,4
@ -614,10 +614,10 @@ pole_next_gen:
cmp ebx,eax
jle @b
mov ebx,[memCell]
mov dword[ebx],eax ;firstC <- eax
mov [ebx],eax ;firstC <- eax
mov dword[b_sort],eax
stdcall pole_fl_sort, dword[memCell],eax
mov [b_sort],eax
stdcall pole_fl_sort, [memCell],eax
mov ecx,[memCell]
mov ebx,1
@ -628,7 +628,7 @@ pole_next_gen:
jae .no_change
xor byte[edx+Cell.liv],3
mov edi,[tim]
mov dword[edx+Cell.tc],edi
mov [edx+Cell.tc],edi
bt word[edx+Cell.liv],0
jc .new_cell
push eax
@ -722,8 +722,8 @@ proc pole_fl_sort, a:dword, n:dword
add edi,ecx ;edi -> &a[i]
mov esi,[edi] ;w=a[i];
mov edx,[ecx+4]
mov dword[edi],edx ;a[i]=a[1];
mov dword[ecx+4],esi ;a[1]=w;
mov [edi],edx ;a[i]=a[1];
mov [ecx+4],esi ;a[1]=w;
dec eax
cmp eax,2
@ -749,7 +749,7 @@ endl
lea edx,[ebx*4]
add edx,eax
mov edx,[edx]
mov dword[copy],edx ;copy=a[i];
mov [copy],edx ;copy=a[i];
mov edi,ebx
shl edi,1 ;m=i<<1;
.cycle_b: ;while (m<=k) {
@ -774,7 +774,7 @@ endl
;if (pole_compare_cells_bm(a[j],copy)) {
lea edx,[esi*4]
add edx,eax
stdcall pole_compare_cells_bm, dword[edx],dword[copy]
stdcall pole_compare_cells_bm, dword[edx],[copy]
cmp dl,0
je .cycle_e ;} else break; //¢ë室 ¨§ 横« 
@ -795,7 +795,7 @@ endl
shl ebx,2
add eax,ebx
mov edx,[copy]
mov dword[eax],edx ;a[i]=copy;
mov [eax],edx ;a[i]=copy;
popad
ret
@ -1480,7 +1480,7 @@ but_pole_up:
xor edx,edx
div ecx
@@:
add dword[Cor_y],eax
add [Cor_y],eax
pop edx ecx eax
stdcall [buf2d_clear], buf_0, [buf_0.color]
call pole_paint
@ -1499,7 +1499,7 @@ but_pole_dn:
xor edx,edx
div ecx
@@:
sub dword[Cor_y],eax
sub [Cor_y],eax
pop edx ecx eax
stdcall [buf2d_clear], buf_0, [buf_0.color]
call pole_paint
@ -1511,14 +1511,13 @@ but_pole_left:
push eax ecx edx
mov eax,[buf_0.w]
shr eax,2
xor ecx,ecx
mov cl,byte[zoom]
cmp cx,2
movzx ecx,byte[zoom]
cmp ecx,2
jl @f ;¤¥«¥­¨¥ ­  ¢¥«¨ç¨­ã zoom
xor edx,edx
div ecx
@@:
add dword[Cor_x],eax
add [Cor_x],eax
pop edx ecx eax
stdcall [buf2d_clear], buf_0, [buf_0.color]
call pole_paint
@ -1537,25 +1536,20 @@ but_pole_right:
xor edx,edx
div ecx
@@:
sub dword[Cor_x],eax
sub [Cor_x],eax
pop edx ecx eax
stdcall [buf2d_clear], buf_0, [buf_0.color]
call pole_paint
stdcall [buf2d_draw], buf_0
ret
;align 4
;but_bru_clear:
; ret
;input:
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
;output:
; eax - ç¨á«®
align 4
proc conv_str_to_int, buf:dword
proc conv_str_to_int uses ebx ecx esi, buf:dword
xor eax,eax
push ebx ecx esi
xor ebx,ebx
mov esi,[buf]
;®¯à¥¤¥«¥­¨¥ ®âà¨æ â¥«ì­ëå ç¨á¥«
@ -1617,7 +1611,6 @@ proc conv_str_to_int, buf:dword
sub ecx,eax
mov eax,ecx
@@:
pop esi ecx ebx
ret
endp
@ -1661,32 +1654,17 @@ db 'RLE',0
db 0
head_f_i:
head_f_l db '"‘¨á⥬­ ï ®è¨¡ª ',0
system_dir_0 db '/sys/lib/'
lib_name_0 db 'proc_lib.obj',0
err_message_found_lib_0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,'" -tE',0
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,'" -tE',0
system_dir_1 db '/sys/lib/'
lib_name_1 db 'libimg.obj',0
err_message_found_lib_1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,'" -tE',0
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,'" -tE',0
system_dir_2 db '/sys/lib/'
lib_name_2 db 'buf2d.obj',0
err_msg_found_lib_2 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,'" -tE',0
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,'" -tE',0
l_libs_start:
lib0 l_libs lib_name_0, 0, file_name, system_dir_0,\
err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i
lib1 l_libs lib_name_1, 0, file_name, system_dir_1,\
err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i
lib2 l_libs lib_name_2, 0, file_name, system_dir_2,\
err_msg_found_lib_2,head_f_l,import_buf2d,err_msg_import_2,head_f_i
lib0 l_libs lib_name_0, file_name, system_dir_0, import_proclib
lib1 l_libs lib_name_1, file_name, system_dir_1, import_libimg
lib2 l_libs lib_name_2, file_name, system_dir_2, import_buf2d
l_libs_end:
align 4
@ -1702,7 +1680,7 @@ import_libimg:
aimg_destroy db 'img_destroy',0
align 4
proclib_import: ;®¯¨á ­¨¥ íªá¯®àâ¨à㥬ëå ä㭪権
import_proclib:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
dd 0,0
@ -1740,16 +1718,15 @@ buf_0: dd 0
align 16
i_end:
mouse_dd dd 0
last_time dd 0
mouse_dd rd 1
last_time rd 1
sc system_colors
procinfo process_information
rb 1024
stacktop:
sys_path rb 1024
file_name:
rb 2048 ;4096
file_name rb 2048 ;4096
plugin_path rb 4096
openfile_path rb 4096
filename_area rb 256
rb 1024
stacktop:
mem:

View File

@ -8,13 +8,14 @@ include '../../macros.inc'
include '../../proc32.inc'
include '../../KOSfuncs.inc'
include '../../load_img.inc'
include '../../load_lib.mac'
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
include '../../develop/libraries/TinyGL/asm_fork/zbuffer.inc'
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
include '../../develop/info3ds/info_fun_float.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'Image transform 02.10.20',0 ;¯®¤¯¨áì ®ª­ 
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'Image transform 08.12.20',0 ;ŻŽ¤Ż¨áě ŽŞ­ 
BUF_STRUCT_SIZE equ 21
buf2d_data equ dword[edi] ;¤ ­­ë¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
@ -1422,40 +1423,12 @@ lib_name_2 db 'buf2d.obj',0
system_dir_3 db '/sys/lib/'
lib_name_3 db 'tinygl.obj',0
align 4
head_f_i:
if lang eq ru
head_f_l db '"‘¨á⥬­ ï ®è¨¡ª ',0
err_message_found_lib_0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,'" -tE',0
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,'" -tE',0
err_message_found_lib_1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,'" -tE',0
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,'" -tE',0
err_msg_found_lib_2 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,'" -tE',0
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,'" -tE',0
err_msg_found_lib_3 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'tinygl.obj',39,'" -tE',0
err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'tinygl',39,'" -tE',0
else
head_f_l db '"System error',0
err_message_found_lib_0 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,'" -tE',0
err_message_import_0 db 'Error on load import library ',39,'proc_lib.obj',39,'" -tE',0
err_message_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,'" -tE',0
err_message_import_1 db 'Error on load import library ',39,'libimg.obj',39,'" -tE',0
err_msg_found_lib_2 db 'Sorry I cannot found library ',39,'buf2d.obj',39,'" -tE',0
err_msg_import_2 db 'Error on load import library ',39,'buf2d',39,'" -tE',0
err_msg_found_lib_3 db 'Sorry I cannot found library ',39,'tinygl.obj',39,'" -tE',0
err_msg_import_3 db 'Error on load import library ',39,'tinygl',39,'" -tE',0
end if
align 4
l_libs_start:
lib_0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i
lib_1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\
err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i
lib_2 l_libs lib_name_2, sys_path, library_path, system_dir_2,\
err_msg_found_lib_2,head_f_l,import_buf2d,err_msg_import_2,head_f_i
lib_3 l_libs lib_name_3, sys_path, library_path, system_dir_3,\
err_msg_found_lib_3,head_f_l,import_lib_tinygl,err_msg_import_3,head_f_i
lib_0 l_libs lib_name_0, file_name, system_dir_0, import_proclib
lib_1 l_libs lib_name_1, file_name, system_dir_1, import_libimg
lib_2 l_libs lib_name_2, library_path, system_dir_2, import_buf2d
lib_3 l_libs lib_name_3, library_path, system_dir_3, import_lib_tinygl
l_libs_end:
align 4
@ -1506,7 +1479,7 @@ import_libimg:
aimg_draw db 'img_draw',0
align 4
proclib_import: ;®¯¨á ­¨¥ íªá¯®àâ¨à㥬ëå ä㭪権
import_proclib:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
OpenDialog_Set_file_name dd aOpenDialog_Set_file_name
@ -1656,8 +1629,7 @@ run_file_70 FileInfoBlock
align 16
stacktop:
sys_path rb 1024
file_name:
rb 1024 ;4096
file_name rb 1024 ;4096
library_path rb 1024
plugin_path rb 4096
openfile_path rb 4096

View File

@ -1,9 +1,9 @@
; MIDI PLAYER FOR MENUET v1.0
; MIDI PLAYER FOR KOLIBRI v1.0
; Written in pure assembler by Ivushkin Andrey aka Willow
;
;
; Created: December 7, 2004
; Last changed: July 29, 2005
; Last changed: December 8, 2020
;
; COMPILE WITH FASM
@ -53,23 +53,21 @@ FL_BOTTRED equ 0x100
FL_MULSEL equ 0x8000
use32
org 0x0
org 0
db 'MENUET01'
dd 0x01
dd START
dd IM_END
dd 1, START, IM_END
dd I_END ;APP_MEM
dd stacktop ;APP_MEM - 1024
dd I_PARAM
dd cur_dir_path
dd I_PARAM, cur_dir_path
listsel dd 0
channel dd 0
COLOR_ORDER equ MENUETOS
include '../../../config.inc' ;for nightbuild
include '../../../macros.inc' ; decrease code size (optional)
include '../../../develop/libraries/box_lib/load_lib.mac'
include '../../../KOSfuncs.inc'
include '../../../load_lib.mac'
@use_library
@ -86,7 +84,7 @@ hdrimg:
btns:
file 'buttons.gif'
START:
mcall 68, 11
mcall SF_SYS_MISC, SSF_HEAP_INIT
load_libraries l_libs_start,end_l_libs
@ -105,7 +103,7 @@ load_libraries l_libs_start,end_l_libs
or [flag],FL_BOTTRED;+FL_MUTE
mov ecx,ipcarea
call init_ipc
mcall 40,1000111b
mcall SF_SET_EVENTS_MASK,1000111b
mov esi,btns
mov edi,btn_raw
call ReadGIF
@ -116,7 +114,7 @@ load_libraries l_libs_start,end_l_libs
mov edi,bottom_raw
call ReadGIF
call respawn
mcall 9,prcinfo,-1
mcall SF_THREAD_INFO,prcinfo,-1
mov edx,[ebx+30]
mov [parentPID],edx
mov esi,I_PARAM
@ -190,9 +188,7 @@ clearpath:
mov esi,filename
mov edi,I_PARAM
rep movsd
mov eax,70
mov ebx,file_info
mcall
mcall SF_FILE,file_info
add ebx,workarea
mov [midi_limit],ebx
mov edi,I_PARAM
@ -245,7 +241,7 @@ decode_end:
test [flag],FL_PLAY
jz .noplay
call draw_window
mcall 5,100
mcall SF_SLEEP,100
mov eax,IPC_PLAY
call ipc_send
.noplay:
@ -263,8 +259,7 @@ red:
still:
mov ecx,ipcarea
call init_ipc
mov eax,10
mcall
mcall SF_WAIT_EVENT
prc_event:
test eax,eax
jz still
@ -290,7 +285,7 @@ prc_event:
xor edx,edx
test [flag],FL_SHUFFLE
jz .noshuf
mcall 26,9
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
movzx ebx,byte[list_count]
div ebx
mov eax,edx
@ -424,12 +419,6 @@ db 0
;---------------------------------------------------------------------
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
head_f_i:
head_f_l db 'error',0
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
err_message_import2 db 'proc_lib.obj - Wrong import!',0
;---------------------------------------------------------------------
align 4
ProcLib_import:
@ -444,8 +433,8 @@ aOpenDialog_Start db 'OpenDialog_start',0
;---------------------------------------------------------------------
l_libs_start:
library01 l_libs system_dir_ProcLib+9, cur_dir_path, temp_dir_pach, system_dir_ProcLib, \
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
library01 l_libs system_dir_ProcLib+9, temp_dir_pach, system_dir_ProcLib, \
ProcLib_import
end_l_libs:
;---------------------------------------------------------------------

View File

@ -8,13 +8,8 @@ pusha
mov ah,[edx+esi]
inc esi
test ah,ah
jz @f
jmp .check_next
@@:
mov eax,4
mov ebx,[edi]
mov ecx,[edi+4]
mcall
jnz .check_next
mcall SF_DRAW_TEXT,[edi],[edi+4]
popa
ret
}

View File

@ -21,7 +21,7 @@
format binary as ""
title equ 'Screenshooter v1.21' ; ‡ £®«®¢®ª ®ª­ 
include '../../develop/libraries/box_lib/load_lib.mac'
include '../../load_lib.mac'
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../config.inc' ;for nightbuild
include '../../proc32.inc'
@ -34,21 +34,15 @@ include 'textwork.inc'
include 'scrshoot.mac'
use32
org 0x0
org 0
db 'MENUET01'
dd 0x1
dd start
dd IM_END
dd i_end
dd stacktop
dd cmdstr
dd cur_dir_path
dd 1, start, IM_END, i_end, stacktop, cmdstr, cur_dir_path
include 'lang.inc'
include '../../dll.inc'
align 4
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
use_txt_button ; |
use_label ; |-- GUI ª®¬¯®­¥­âë ¨ ­¥ª®â®àë¥ ¯à®æ¥¤ãàë
use_text_work ; /
@ -607,14 +601,14 @@ labels_end:
;---------------------------------------------------------------------
l_libs_start:
library01 l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
library01 l_libs system_dir_Boxlib+9, library_path, system_dir_Boxlib, \
Box_lib_import
library02 l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
library02 l_libs system_dir_ProcLib+9, library_path, system_dir_ProcLib, \
ProcLib_import
library03 l_libs system_dir_LibImg+9, cur_dir_path, library_path, system_dir_LibImg, \
err_message_found_lib3, head_f_l, import_libimg, err_message_import3, head_f_i
library03 l_libs system_dir_LibImg+9, library_path, system_dir_LibImg, \
import_libimg
end_l_libs:
;---------------------------------------------------------------------

View File

@ -14,24 +14,15 @@ macro draw_status text_ptr
macro start_draw_window
{
;mov eax,12
push 12
pop eax
xor ebx,ebx
inc ebx
mcall
mcall SF_REDRAW
}
;--- ñîîáùèòü ñèñòåìå î çàâåðøåíèè ïåðåðèñîâêè îêíà ---
macro stop_draw_window
{
;mov eax,12
push 12
pop eax
;mov ebx,2
push 2
pop ebx
mcall
mcall SF_REDRAW, SSF_END_DRAW
}
;--- óñòàíîâèòü ìàñêó îæèäàåìûõ ñîáûòèé ---
@ -39,8 +30,7 @@ macro stop_draw_window
;--- îæèäàòü ñîáûòèÿ ---
macro wait_event redraw,key,button,mouse,ipc,other
{
mov eax,10
mcall
mcall SF_WAIT_EVENT
dec ax
if redraw eq
else
@ -77,76 +67,25 @@ end if
;--- óñòàíîâèòü ìàñêó îæèäàåìûõ ñîáûòèé ---
macro set_events_mask mask
{
;mov eax,40
push 40
pop eax
;mov ebx,mask
push mask
pop ebx
mcall
mcall SF_SET_EVENTS_MASK, mask
}
;macro check_boxes_set_sys_color start,end,color_table
;{
;ch_left equ [edi] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî õ
;ch_top equ [edi+4] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî ó
;ch_text_margin equ [edi+8] ;=4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè
;ch_size equ [edi+8] ;12 ðàçìåð êâàäðàòà ÷åê áîêñà
;ch_color equ [edi+12] ;öâåò âíóòðè checkbox
;ch_border_color equ [edi+16] ; or [edi+4] ;öâåò ðàìêè checkbox åå ìîæíî çàäàòü ñàìîñòîÿòåëüíî
;ch_text_color equ [edi+20];[edi+4] ;öâåò òåêñòà
;ch_text_ptr equ [edi+24] ;óêàçàòåëü íà íà÷àëî òåêñòîâîé ñòðîêè
;ch_text_length equ [edi+28]
;ch_flags equ [edi+32] ;ôëàãè
;ch_left equ [edi] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî õ
;ch_top equ [edi+2] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî ó
;ch_color equ [edi+4] ;öâåò âíóòðè checkbox
;ch_border_color equ [edi+8] ;öâåò ðàìêè checkbox
;ch_text_color equ [edi+12] ;öâåò òåêñòà
;ch_text_ptr equ [edi+16] ;óêàçàòåëü íà íà÷àëî òåêñòîâîé ñòðîêè
;ch_text_length equ [edi+20] ;äëèíà íàäïèñè (2^64 òàêîé äëèíû ìîæåò áûòü òåêñò)
;ch_flags equ [edi+24] ;ôëàãè
; mov edi,start
; mov ecx,((end-start)/ch_struc_size)
; mov esi,color_table
;@@:
; push dword [esi+32]
; pop dword ch_text_color
; push dword [esi+36]
; pop dword ch_border_color
; add edi,ch_struc_size
; loop @b
;}
macro get_key
{
;mov eax,2
push 2
pop eax
mcall
mcall SF_GET_KEY
}
;--- ïîëó÷èòü êîä íàæàòîé êíîïêè ---
macro get_pressed_button
{
;mov eax,17
push 17
pop eax
mcall
mcall SF_GET_BUTTON
}
macro get_active_window
{
mov eax,18
mov ebx,7
mcall
mcall SF_SYSTEM,SSF_GET_ACTIVE_WINDOW
}
;--- ¯®«ãç¨âì ¨­ä®à¬ æ¨î ® ¯à®æ¥áᥠ---
;--- ïîëó÷èòü èíôîðìàöèþ î ïðîöåññå ---
macro get_procinfo proc_inf_buf,slot_num
{
;mov eax,9
push 9
pop eax
;mov ebx,proc_inf_buf
push proc_inf_buf
pop ebx
@ -158,11 +97,11 @@ else
push slot_num
pop ecx
end if
mcall
mcall SF_THREAD_INFO
}
macro get_screen_prop struc_ptr
{
mov eax,61
mov eax,SF_GET_GRAPHICAL_PARAMS
push eax eax
xor ebx,ebx
inc ebx
@ -179,39 +118,31 @@ macro get_screen_prop struc_ptr
}
macro min_window
{
mov eax,18
mov ebx,10
mcall
mcall SF_SYSTEM,SSF_MINIMIZE_WINDOW
}
macro app_close
{
or eax,-1
mcall
mcall SF_TERMINATE_PROCESS
}
macro get_skin_height
{
mov eax,48
mov ebx,4
mcall
mcall SF_STYLE_SETTINGS,SSF_GET_SKIN_HEIGHT
}
macro delay time
{
mov eax,5
if time eq
else
mov ebx,time
end if
mcall
mcall SF_SLEEP
}
macro activ_window slot_n
{
mov eax,18
mov ebx,3
if slot_n eq
else
mov ecx,slot_n
end if
mcall
mcall SF_SYSTEM,SSF_FOCUS_WINDOW
}
struc screen_prop
{
@ -261,7 +192,7 @@ struc ipc_buffer size
.messages: rb size
}
;--- æ¢¥â  ---
;--- öâåòà  ---
cl_white=0xffffff
cl_black=0x000000

View File

@ -55,6 +55,7 @@ align 4
jmp .still
align 4
.draw_window:
start_draw_window
@ -130,8 +131,9 @@ init_editbox:
call [edit_box_set_text] ;ecx,edi
ret
;--------------------------------------------------------------------
;--- ‘ç¨â뢠­¨¥ ®¡« â¨ ----------------------------------------------
;--- ‘ç¨â뢠­¨¥ ®¡« á⨠---------------------------------------------
;--------------------------------------------------------------------
align 4
read_rect:
bt dword [use_rect_active_window.flags],1
jc read_rect_from_active_window
@ -173,6 +175,7 @@ read_rect:
mov [rect.height],ax
ret
align 4
read_rect_from_active_window:
call get_active_window_info
@ -188,6 +191,7 @@ read_rect_from_active_window:
mov [rect.height],ax
ret
align 4
draw_rect_on_screen:
xor edx,edx
@ -237,37 +241,11 @@ ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;DATA ¤ ­­ë¥
;‚ᥣ¤  ᮡ«î¤ âì ¯®á«¥¤®¢ â¥«ì­®áâì ¢ ¨¬¥­¨.
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
system_dir_LibImg db '/sys/lib/libimg.obj',0
if lang eq ru
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
err_message_found_lib1 db 'box_lib.obj - ­¥ ­ ©¤¥­ !',0
err_message_found_lib2 db 'proc_lib.obj - ­¥ ­ ©¤¥­ !',0
err_message_found_lib3 db 'libimg.obj - ­¥ ­ ©¤¥­ !',0
err_message_import1 db 'box_lib.obj - ®è¨¡ª  ¨¬¯®àâ !',0
err_message_import2 db 'proc_lib.obj - ®è¨¡ª  ¨¬¯®àâ !',0
err_message_import3 db 'libimg.obj - ®è¨¡ª  ¨¬¯®àâ !',0
else
head_f_i:
head_f_l db 'System error',0
err_message_found_lib1 db 'box_lib.obj - Not found!',0
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
err_message_found_lib3 db 'libimg.obj - Not found!',0
err_message_import1 db 'box_lib.obj - Wrong import!',0
err_message_import2 db 'proc_lib.obj - Wrong import!',0
err_message_import3 db 'libimg.obj - Wrong import!',0
end if
;---------------------------------------------------------------------
align 4
ProcLib_import:

View File

@ -69,8 +69,7 @@ ProcLib_import:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
;OpenDialog__Version dd aOpenDialog_Version
dd 0
dd 0
dd 0,0
aOpenDialog_Init db 'OpenDialog_init',0
aOpenDialog_Start db 'OpenDialog_start',0
;aOpenDialog_Version db 'Version_OpenDialog',0
@ -85,8 +84,7 @@ init_checkbox dd aInit_checkbox
check_box_draw dd aCheck_box_draw
check_box_mouse dd aCheck_box_mouse
dd 0
dd 0
dd 0,0
aEdit_box_draw db 'edit_box',0
aEdit_box_key db 'edit_box_key',0
@ -97,26 +95,15 @@ aCheck_box_draw db 'check_box_draw2',0
aCheck_box_mouse db 'check_box_mouse2',0
;---------------------------------------------------------------------
head_f_i:
head_f_l db 'System error',0
err_message_found_lib1 db 'box_lib.obj - Not found!',0
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
err_message_import1 db 'box_lib.obj - Wrong import!',0
err_message_import2 db 'proc_lib.obj - Wrong import!',0
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
;---------------------------------------------------------------------
align 4
l_libs_start:
library01 l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
library01 l_libs system_dir_Boxlib+9, library_path, system_dir_Boxlib, Box_lib_import
library02 l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
library02 l_libs system_dir_ProcLib+9, library_path, system_dir_ProcLib, ProcLib_import
load_lib_end:
;---------------------------------------------------------------------

View File

@ -23,15 +23,16 @@ use32
dd cur_dir_path
;---------------------------------------------------------------------
include '../../../config.inc' ;for nightbuild
include '../../../KOSfuncs.inc'
include '../../../macros.inc'
include '../../../gui_patterns.inc'
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../../develop/libraries/box_lib/load_lib.mac'
include '../../../load_lib.mac'
@use_library
START:
mcall 68,11
mcall 40,0x80000027
mcall SF_SYS_MISC,SSF_HEAP_INIT
mcall SF_SET_EVENTS_MASK,0x80000027
load_libraries l_libs_start,load_lib_end
cmp eax,-1
@ -130,7 +131,7 @@ red:
call draw_window
;--------------------------------------
still:
mcall 10
mcall SF_WAIT_EVENT
dec eax
jz red
@ -182,11 +183,11 @@ clear_messages:
exit:
xor eax,eax
dec eax
mcall
mcall ;SF_TERMINATE_PROCESS
;*********************************************************************
button:
; button pressed
mcall 17
mcall SF_GET_BUTTON
xchg al,ah
cmp al,7
jz but7
@ -318,7 +319,7 @@ set_editbox_position_all:
ret
;*********************************************************************
key:
mcall 2
mcall SF_GET_KEY
push dword edit1
call [edit_box_key]
@ -408,7 +409,7 @@ draw_messages:
neg ecx
mov esi,ecx
pop edi
mcall 4,,0xB0000000,edi
mcall SF_DRAW_TEXT,,0xB0000000,edi
add ebx,16
add edi,80
cmp edi,message_cur_pos
@ -418,20 +419,20 @@ draw_messages:
;*********************************************************************
draw_log_area:
DrawRectangle 5, LOG_Y, WIN_W-12, LOG_H, [sc.work_graph]
mcall 13, <6,WIN_W-13>, <LOG_Y+1,LOG_H-1>, 0xFFFfff
mcall SF_DRAW_RECT, <6,WIN_W-13>, <LOG_Y+1,LOG_H-1>, 0xFFFfff
DrawRectangle3D 6, LOG_Y+1, WIN_W-13, LOG_H-1, 0xDEDEDE, [sc.work_graph]
ret
;*********************************************************************
draw_window:
; start redraw
mcall 12,1
mcall 48,3,sc,40
mcall SF_REDRAW,SSF_BEGIN_DRAW
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,40
;--------------------------------------
edit_boxes_set_sys_color edit1,editboxes_end,sc
check_boxes_set_sys_color2 check1,check1_end,sc
;--------------------------------------
; define window
mcall 48,4
mcall SF_STYLE_SETTINGS,SSF_GET_SKIN_HEIGHT
mov ecx,100 shl 16 + WIN_H
add ecx, eax
@ -440,8 +441,8 @@ draw_window:
add edx,34000000h
xor esi,esi
xor edi,edi
mcall 0,<250,WIN_W+10>,,,,caption_str
mcall 9,procinfo,-1
mcall SF_CREATE_WINDOW,<250,WIN_W+10>,,,,caption_str
mcall SF_THREAD_INFO,procinfo,-1
mov eax,[procinfo+70] ;status of window
test eax,100b
@ -457,7 +458,7 @@ draw_window:
call draw_editbox
; end redraw
.end:
mcall 12,2
mcall SF_REDRAW,SSF_END_DRAW
ret
;*********************************************************************
draw_editbox:
@ -494,7 +495,7 @@ set_editbox_position:
draw_buttons:
; define compress button
mov cx,18
mcall 8,<WIN_W - RIGHT_BTN_W - 5, RIGHT_BTN_W>, <3, 20>,2,[sc.work_button]
mcall SF_DEFINE_BUTTON,<WIN_W - RIGHT_BTN_W - 5, RIGHT_BTN_W>, <3, 20>,2,[sc.work_button]
; uncompress button
inc edx
add ecx,LINE_H shl 16
@ -506,10 +507,10 @@ draw_buttons:
mov ecx,[sc.work_button_text]
or ecx,0x90000000
mov edx,aQuestion
mcall 4,<WIN_W-19, LINE_H*2+5>
mcall SF_DRAW_TEXT,<WIN_W-19, LINE_H*2+5>
pop esi
; define Path button
mcall 8,<6,64>,<LINE_H*2+3,20>,4
mcall SF_DEFINE_BUTTON,<6,64>,<LINE_H*2+3,20>,4
; text on Path button
mov ebx,8 shl 16+5
mov al,4

View File

@ -44,13 +44,14 @@ KMENUITEM_SEPARATOR equ 2
include 'lang.inc'
include '../../macros.inc'
include '../../proc32.inc'
include '../../KOSfuncs.inc'
include '../../dll.inc'
include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;for uses checkBox and editBox
include '../../develop/libraries/box_lib/load_lib.mac'
include '../../load_lib.mac'
@use_library
START:
mcall 48,3,sc,sizeof.system_colors ;get system colors
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors ;get system colors
stdcall dll.Load, @IMPORT
or eax, eax
@ -61,10 +62,10 @@ START:
;set mask for events:
;ñîîáùåíèå î ïåðåðèñîâêå,íàæàòà êíîïêà, îïðåäåë¸ííàÿ ðàíåå, ñîáûòèå îò ìûøè (÷òî-òî ñëó÷èëîñü - íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñÿ ïðè ïðî÷òåíèè)
mcall 40, 0x27
mcall SF_SET_EVENTS_MASK, 0x27
mov ecx,[sc.work_text]
and ecx, 0x9FFFFFFF
and ecx,0x9FFFFFFF
or ecx,0x90000000
call initBuf
@ -120,7 +121,7 @@ START:
call draw_window
event_wait:
mcall 10
mcall SF_WAIT_EVENT
cmp eax, 1 ; Event redraw
je redraw
@ -142,18 +143,18 @@ redraw:
jmp event_wait
key:
mcall 2
mcall SF_GET_KEY
invoke edit_box_key, editLabel
invoke edit_box_key, editMBR
jmp event_wait
button:
mcall 17
mcall SF_GET_BUTTON
cmp ah, 1 ;Close button
jne @f
exit:
mcall -1
mcall SF_TERMINATE_PROCESS
@@:
cmp ah, 2 ;Format button
jne @f
@ -225,7 +226,7 @@ butFormat:
butSelectFS:
push eax ebx ecx
mcall 9, pi, -1 ;get window coord
mcall SF_THREAD_INFO, pi, -1 ;get window coord
mov eax, dword[pi+34]
add eax, Otstup
@ -241,7 +242,7 @@ butSelectFS:
butUnit:
push eax ebx ecx
mcall 9, pi, -1
mcall SF_THREAD_INFO, pi, -1
mov eax, dword[pi+34]
add eax, Otstup+80+30+delta
@ -257,7 +258,7 @@ butUnit:
butDevice:
push eax ebx ecx
mcall 9, pi, -1
mcall SF_THREAD_INFO, pi, -1
mov eax, dword[pi+34]
add eax, Otstup+80+30+delta
@ -279,9 +280,9 @@ draw_warningWindow:
ret
draw_window:
mcall 12, 1
mcall SF_REDRAW, SSF_BEGIN_DRAW
mov eax, 0 ; function 0 : define and draw window
mov eax, SF_CREATE_WINDOW ; define and draw window
mov ebx, 100 * 65536 + (290+delta) ; [x start] *65536 + [x size]
mov ecx, 100 * 65536 + (310+dy) ; [y start] *65536 + [y size]
mov edx,[sc.work] ;0x14FFFFFF
@ -293,38 +294,24 @@ draw_window:
mcall
mov ebx, (290+delta-Otstup-130+10)*65536+130
mov ecx, (270+dy)*65536+(20+3)
mov edx, 0x00000002
mov esi, 0xAABBCC
mcall 8
mcall SF_DEFINE_BUTTON, (290+delta-Otstup-130+10)*65536+130, (270+dy)*65536+(20+3), 2
mov ebx, (290+delta-Otstup-50-2)*65536+(50+2)
mov ecx, (210+dy)*65536+21 ;14
mov edx, 0x00000003
mov esi, 0xAABBCC
mcall 8
inc edx
mcall , (290+delta-Otstup-50-2)*65536+(50+2), (210+dy)*65536+21 ;14
;button select FS
mov ebx, Otstup*65536+120
mov ecx, (110)*65536+(21)
mov edx, 0x00000004
inc edx
mov esi, 0xFFFFFF
mcall 8
mcall , Otstup*65536+120, (110)*65536+(21)
;button select unit size
mov ebx, (Otstup+80+30+delta)*65536+120
mov ecx, (110)*65536+(21)
mov edx, 0x00000005
mov esi, 0xFFFFFF
mcall 8
inc edx
mcall , (Otstup+80+30+delta)*65536+120, (110)*65536+(21)
;button select device
mov ebx, (Otstup+80+30+delta)*65536+120
mov ecx, (60)*65536+(21)
mov edx, 0x00000006
mov esi, 0xFFFFFF
mcall 8
inc edx
mcall , (Otstup+80+30+delta)*65536+120, (60)*65536+(21)
invoke check_box_draw, ch1 ;ðèñîâàíèå ÷åêáîêñîâ
invoke check_box_draw, ch2
@ -345,7 +332,7 @@ draw_window:
push dword frame_data2
invoke frame_draw
mcall 12, 2
mcall SF_REDRAW, SSF_END_DRAW
ret
@ -385,13 +372,6 @@ unittext:
.6 db '32 Š¡', 0
.7 db '64 Š¡', 0
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
err_message_found_lib0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
err_message_found_lib1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'kmenu.obj',39,0
err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'kmenu',39,0
else ;EN language
title db "Formatting Disk Utility", 0
@ -418,13 +398,6 @@ unittext:
.6 db '32 Kb', 0
.7 db '64 Kb', 0
head_f_i:
head_f_l db 'System error',0
err_message_found_lib0 db 'Could not find library ',39,'proc_lib.obj',39,0
err_message_import0 db 'Error importing library ',39,'proc_lib.obj',39,0
err_message_found_lib1 db 'Could not find library ',39,'kmenu.obj',39,0
err_message_import1 db 'Error importing library ',39,'kmenu',39,0
end if
@ -450,11 +423,11 @@ getDeviceList:
mov [kmDevice], eax
sizeBDVK = 560 ;304 ;
mcall 68, 11
mcall SF_SYS_MISC, SSF_HEAP_INIT
mcall 68, 12, sizeBDVK*maxDeviceCount+32
mcall SF_SYS_MISC, SSF_MEM_ALLOC, sizeBDVK*maxDeviceCount+32
mov dword[read_folder_struct.return], eax
mcall 70, read_folder_struct
mcall SF_FILE, read_folder_struct
cmp eax, 0
je .next
cmp eax, 6
@ -500,27 +473,27 @@ draw_super_text:
mov eax, text.volume
mov edx, eax
mov esi, 13
mcall 4
mcall SF_DRAW_TEXT
mov ebx, Otstup * 65536 + 99-6
mov edx, text.fs
mov esi, 12
mcall 4
mcall SF_DRAW_TEXT
mov ebx, (Otstup+80+30+delta) * 65536 + 99-6
mov edx, text.unit
mov esi, 21
mcall 4
mcall SF_DRAW_TEXT
mov ebx, (Otstup+80+30+delta) * 65536 + 49-6
mov edx, text.disk
mov esi, 9
mcall 4
mcall SF_DRAW_TEXT
; mov ebx, Otstup * 65536 + (151-6+dy)
; mov edx, text.option
; mov esi, 8
; mcall 4
; mcall SF_DRAW_TEXT
mov ebx, (Otstup+80+30+delta +5) * 65536 + (110+3)
mov dl, byte[kmUnitID]
@ -567,7 +540,7 @@ draw_super_text:
mov byte[kmUnitID], 0
mov edx, unittext.0
.printUnit:
mcall 4
mcall SF_DRAW_TEXT
mov ebx, (Otstup+5) * 65536 + (110+3)
mov dl, byte[kmID]
@ -600,7 +573,7 @@ draw_super_text:
mov edx, kmNone
.printFS:
;mov esi, 8
mcall 4
mcall SF_DRAW_TEXT
;button device
mov ebx, (Otstup+80+30+delta +5) * 65536 + (60+3)
@ -609,7 +582,7 @@ draw_super_text:
add edx, deviceAdrStr
mov edx, dword[edx]
;call setCurrentDeviceInEDX
mcall 4
mcall SF_DRAW_TEXT
;buttons text
mov ebx, (290+delta-Otstup-130+10+2+10) * 65536 + (277-3+dy)
@ -617,14 +590,14 @@ draw_super_text:
mov eax, text.format
mov edx, eax
mov esi, 6
mcall 4
mcall SF_DRAW_TEXT
mov ebx, (290+delta-Otstup-52+6+8) * 65536 + (213+dy)
;mov ecx, 0xFFFFFF
mov eax, browse ;text.browse
mov edx, eax
mov esi, 6
mcall 4
mcall SF_DRAW_TEXT
pop esi edi edx ecx ebx eax
ret
@ -777,7 +750,7 @@ dd 0,0
akmenuitem_draw db 'kmenuitem_draw',0
align 4
proclib_import:
import_proclib:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
dd 0,0
@ -839,8 +812,8 @@ kmExt2: db 'EXT2', 0
;kmXFS: db 'XFS', 0
l_libs_start:
lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, proclib_import,err_message_import0, head_f_i
lib1 l_libs lib1_name, sys_path, file_name, system_dir0, err_message_found_lib1, head_f_l, import_libkmenu,err_message_import1,head_f_i
lib0 l_libs lib0_name, file_name, system_dir0, import_proclib
lib1 l_libs lib1_name, file_name, system_dir0, import_libkmenu
load_lib_end:
;ðàçìåðû: 80 è 120