Merge remote-tracking branch 'nana_jinhao/develop' into develop
This commit is contained in:
		
						commit
						323a5cce4c
					
				@ -222,6 +222,7 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\source\gui\widgets\float_listbox.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\float_listbox.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\form.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\form.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\frame.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\frame.cpp" />
 | 
				
			||||||
 | 
					    <ClCompile Include="..\..\source\gui\widgets\group.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\label.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\label.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\listbox.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\listbox.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\menu.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\menu.cpp" />
 | 
				
			||||||
@ -257,7 +258,127 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\source\unicode_bidi.cpp" />
 | 
					    <ClCompile Include="..\..\source\unicode_bidi.cpp" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\any.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\audio\detail\audio_device.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\audio\detail\audio_stream.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\audio\detail\buffer_preparation.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\audio\player.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\basic_types.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\charset.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\concepts.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\config.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\datetime.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\deploy.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\detail\linux_X11\msg_dispatcher.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\detail\linux_X11\msg_packet.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\detail\linux_X11\platform_spec.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\detail\win32\platform_spec.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\exceptions.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\extrlib\png.h" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\extrlib\pngconf.h" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\extrlib\pnglibconf.h" />
 | 
				
			||||||
 | 
						<ClInclude Include="..\..\include\nana\extrlib\zlib.h" />
 | 
				
			||||||
	<ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp" />
 | 
						<ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\filesystem\file_iterator.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\filesystem\fs_utility.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\fwd.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\animation.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\basis.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\basic_window.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\bedrock.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\bedrock_pi_data.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\color_schemes.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\drawer.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\dynamic_drawing_object.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\effects_renderer.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\element_store.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\events_holder.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\events_operation.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\event_code.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\general_events.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\handle_manager.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\inner_fwd.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\inner_fwd_implement.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\internal_scope_guard.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\native_window_interface.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\runtime_manager.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\widget_colors.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\window_layout.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\window_manager.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\dragger.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\drawing.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\effects.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\element.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\filebox.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\layout_utility.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\msgbox.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\notifier.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\place.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\programming_interface.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\screen.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\state_cursor.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\timer.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\tooltip.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\button.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\categorize.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\checkbox.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\combox.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\date_chooser.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\detail\compset.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\detail\tree_cont.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\float_listbox.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\form.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\frame.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\group.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\label.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\listbox.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\menu.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\menubar.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\panel.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\picture.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\progress.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\scroll.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\textbase.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\textbase_export_interface.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\text_editor.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\text_editor_scheme.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\text_token_stream.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\slider.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\spinbox.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\tabbar.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\textbox.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\toolbar.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\treebox.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\widget.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\wvl.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\internationalization.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\key_type.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_bmp.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_ico.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_impl_interface.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_png.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_processor.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_process_provider.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\native_paint_interface.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\gadget.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\graphics.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\image.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\image_process_interface.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\image_process_selector.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\pixel_buffer.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\text_renderer.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\pat\cloneable.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\std_condition_variable.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\std_mutex.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\std_thread.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\system\dataexch.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\system\platform.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\system\shared_wrapper.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\system\timepiece.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\threads\pool.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\traits.hpp" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\unicode_bidi.hpp" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 | 
					  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 | 
				
			||||||
  <ImportGroup Label="ExtensionTargets">
 | 
					  <ImportGroup Label="ExtensionTargets">
 | 
				
			||||||
 | 
				
			|||||||
@ -58,6 +58,51 @@
 | 
				
			|||||||
    <Filter Include="Source Files\nana\threads">
 | 
					    <Filter Include="Source Files\nana\threads">
 | 
				
			||||||
      <UniqueIdentifier>{e95b4a72-643f-4416-af95-b0bbaf7f0c57}</UniqueIdentifier>
 | 
					      <UniqueIdentifier>{e95b4a72-643f-4416-af95-b0bbaf7f0c57}</UniqueIdentifier>
 | 
				
			||||||
    </Filter>
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\gui">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{d421a05b-b868-4c3d-bdac-ff57d09f8d07}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\gui\widgets">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{64c22f90-dce2-40dc-be98-edc9fe8951e8}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\gui\detail">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{91301ff5-79ac-40cc-a6db-bca2097ea763}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\gui\widgets\detail">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{81c62a28-ef5f-43f7-a6ce-e6c186cb411a}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\gui\widgets\skeletons">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{4a1db6f0-a4ee-4514-8e89-54ef9d52e3b8}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\detail">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{c92e890a-ffd5-4efd-8b37-78ed9bbea1e1}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\detail\win32">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{63401f37-26a3-423e-87e6-6840344c3056}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\detail\linux_X11">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{61385c08-f06b-4cf3-8e05-9b47d546164b}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\extrlib">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{e9eadc97-4a14-4a4e-bb52-52d3a20e2693}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\filesystem">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{5667eac1-0887-4936-9502-eac4dd8c1c1d}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\paint">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{e6c4a4d9-b4b5-4c56-bb2a-486f3f777ecb}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\paint\detail">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{ac132633-f80c-4983-8e47-fa7fc17f666e}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\pat">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{ee3e9e63-7221-409e-9659-25864e576e16}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\system">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{ef87057b-dff2-40aa-a05e-9dcd0b335c30}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
 | 
					    <Filter Include="Header Files\threads">
 | 
				
			||||||
 | 
					      <UniqueIdentifier>{8ea232cf-bd7c-47e3-a694-6a8898b677d7}</UniqueIdentifier>
 | 
				
			||||||
 | 
					    </Filter>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClCompile Include="..\..\source\audio\detail\audio_device.cpp">
 | 
					    <ClCompile Include="..\..\source\audio\detail\audio_device.cpp">
 | 
				
			||||||
@ -75,6 +120,9 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\source\detail\win32\platform_spec.cpp">
 | 
					    <ClCompile Include="..\..\source\detail\win32\platform_spec.cpp">
 | 
				
			||||||
      <Filter>Source Files\nana\detail\win32</Filter>
 | 
					      <Filter>Source Files\nana\detail\win32</Filter>
 | 
				
			||||||
	</ClCompile>
 | 
						</ClCompile>
 | 
				
			||||||
 | 
					    <ClCompile Include="..\..\source\filesystem\filesystem.cpp">
 | 
				
			||||||
 | 
					      <Filter>Source Files\nana\filesystem</Filter>
 | 
				
			||||||
 | 
					    </ClCompile>
 | 
				
			||||||
    <ClCompile Include="..\..\source\filesystem\file_iterator.cpp">
 | 
					    <ClCompile Include="..\..\source\filesystem\file_iterator.cpp">
 | 
				
			||||||
      <Filter>Source Files\nana\filesystem</Filter>
 | 
					      <Filter>Source Files\nana\filesystem</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
@ -300,18 +348,375 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\source\gui\widgets\spinbox.cpp">
 | 
					    <ClCompile Include="..\..\source\gui\widgets\spinbox.cpp">
 | 
				
			||||||
      <Filter>Source Files\nana\gui\widgets</Filter>
 | 
					      <Filter>Source Files\nana\gui\widgets</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <ClCompile Include="..\..\source\filesystem\filesystem.cpp">
 | 
					  </ItemGroup>
 | 
				
			||||||
      <Filter>Source Files\nana\filesystem</Filter>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <ClCompile Include="..\..\source\gui\widgets\group.cpp">
 | 
				
			||||||
 | 
					      <Filter>Source Files\nana\gui\widgets</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp">
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\button.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\categorize.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\checkbox.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\combox.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\date_chooser.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\float_listbox.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\form.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\frame.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\label.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\listbox.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\menu.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\menubar.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\panel.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\picture.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\progress.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\scroll.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\slider.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\spinbox.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\tabbar.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\textbox.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\toolbar.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\treebox.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\widget.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\basic_window.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\bedrock.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\bedrock_pi_data.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\color_schemes.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\drawer.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\dynamic_drawing_object.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\effects_renderer.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\element_store.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\event_code.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\events_holder.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\events_operation.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\general_events.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\handle_manager.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\inner_fwd.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\inner_fwd_implement.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\internal_scope_guard.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\native_window_interface.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\runtime_manager.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\widget_colors.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\window_layout.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\detail\window_manager.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\animation.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\basis.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\dragger.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\drawing.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\effects.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\element.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\filebox.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\layout_utility.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\msgbox.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\notifier.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\place.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\programming_interface.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\screen.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\state_cursor.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\timer.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\tooltip.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\wvl.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\detail\compset.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\detail\tree_cont.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\text_editor.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets\skeletons</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\text_editor_scheme.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets\skeletons</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\text_token_stream.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets\skeletons</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\textbase.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets\skeletons</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\skeletons\textbase_export_interface.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets\skeletons</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\any.hpp">
 | 
				
			||||||
      <Filter>Header Files</Filter>
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
  </ItemGroup>
 | 
					    <ClInclude Include="..\..\include\nana\basic_types.hpp">
 | 
				
			||||||
  <ItemGroup>
 | 
					 | 
				
			||||||
    <ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp">
 | 
					 | 
				
			||||||
      <Filter>Header Files</Filter>
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\charset.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\concepts.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\config.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\datetime.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\deploy.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\exceptions.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\fwd.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\internationalization.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\key_type.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\std_condition_variable.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\std_mutex.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\std_thread.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\traits.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\unicode_bidi.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\audio\detail\audio_device.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\audio\detail\audio_stream.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\audio\detail\buffer_preparation.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\audio\player.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\detail\linux_X11\msg_dispatcher.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\detail\linux_X11</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\detail\linux_X11\msg_packet.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\detail\linux_X11</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\detail\linux_X11\platform_spec.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\detail\linux_X11</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\detail\win32\platform_spec.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\detail\win32</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\extrlib\png.h">
 | 
				
			||||||
 | 
					      <Filter>Header Files\extrlib</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\extrlib\pngconf.h">
 | 
				
			||||||
 | 
					      <Filter>Header Files\extrlib</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\extrlib\pnglibconf.h">
 | 
				
			||||||
 | 
					      <Filter>Header Files\extrlib</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\extrlib\zlib.h">
 | 
				
			||||||
 | 
					      <Filter>Header Files\extrlib</Filter>
 | 
				
			||||||
 | 
						</ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\filesystem</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\filesystem\file_iterator.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\filesystem</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\filesystem\fs_utility.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\filesystem</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\gadget.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\graphics.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\image.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\image_process_interface.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\image_process_selector.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\pixel_buffer.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\text_renderer.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_ico.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_impl_interface.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_png.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_process_provider.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_processor.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\native_paint_interface.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\paint\detail\image_bmp.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\paint\detail</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\pat\cloneable.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\pat</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\system\dataexch.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\system</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\system\platform.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\system</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\system\shared_wrapper.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\system</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\system\timepiece.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\system</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\threads\pool.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\threads</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\include\nana\gui\widgets\group.hpp">
 | 
				
			||||||
 | 
					      <Filter>Header Files\gui\widgets</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
@ -223,6 +223,7 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\source\gui\widgets\float_listbox.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\float_listbox.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\form.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\form.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\frame.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\frame.cpp" />
 | 
				
			||||||
 | 
					    <ClCompile Include="..\..\source\gui\widgets\group.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\label.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\label.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\listbox.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\listbox.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\gui\widgets\menu.cpp" />
 | 
					    <ClCompile Include="..\..\source\gui\widgets\menu.cpp" />
 | 
				
			||||||
@ -257,9 +258,6 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\source\traits.cpp" />
 | 
					    <ClCompile Include="..\..\source\traits.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\source\unicode_bidi.cpp" />
 | 
					    <ClCompile Include="..\..\source\unicode_bidi.cpp" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					 | 
				
			||||||
    <ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					 | 
				
			||||||
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 | 
					  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 | 
				
			||||||
  <ImportGroup Label="ExtensionTargets">
 | 
					  <ImportGroup Label="ExtensionTargets">
 | 
				
			||||||
  </ImportGroup>
 | 
					  </ImportGroup>
 | 
				
			||||||
 | 
				
			|||||||
@ -303,10 +303,8 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\source\filesystem\filesystem.cpp">
 | 
					    <ClCompile Include="..\..\source\filesystem\filesystem.cpp">
 | 
				
			||||||
      <Filter>Source Files\nana\filesystem</Filter>
 | 
					      <Filter>Source Files\nana\filesystem</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
  </ItemGroup>
 | 
					    <ClCompile Include="..\..\source\gui\widgets\group.cpp">
 | 
				
			||||||
  <ItemGroup>
 | 
					      <Filter>Source Files\nana\gui\widgets</Filter>
 | 
				
			||||||
    <ClInclude Include="..\..\include\nana\filesystem\filesystem.hpp">
 | 
					    </ClCompile>
 | 
				
			||||||
      <Filter>Header Files</Filter>
 | 
					 | 
				
			||||||
    </ClInclude>
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
@ -1,12 +1,13 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 *	A filesystem Implementation
 | 
					 *	A filesystem Implementation
 | 
				
			||||||
 *	Copyright(C) 2003 Jinhao(cnjinhao@hotmail.com)
 | 
					 *	Nana C++ Library(http://www.nanapro.org)
 | 
				
			||||||
 | 
					 *	Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *	Distributed under the Boost Software License, Version 1.0.
 | 
					 *	Distributed under the Boost Software License, Version 1.0.
 | 
				
			||||||
 *	(See accompanying file LICENSE_1_0.txt or copy at
 | 
					 *	(See accompanying file LICENSE_1_0.txt or copy at
 | 
				
			||||||
 *	http://www.boost.org/LICENSE_1_0.txt)
 | 
					 *	http://www.boost.org/LICENSE_1_0.txt)
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *	@file: stdex/filesystem/filesystem.hpp
 | 
					 *	@file: nana/filesystem/filesystem.hpp
 | 
				
			||||||
 *	@description:
 | 
					 *	@description:
 | 
				
			||||||
 *		file_iterator is a toolkit for applying each file and directory in a
 | 
					 *		file_iterator is a toolkit for applying each file and directory in a
 | 
				
			||||||
 *	    specified path.
 | 
					 *	    specified path.
 | 
				
			||||||
 | 
				
			|||||||
@ -170,7 +170,7 @@ namespace nana{
 | 
				
			|||||||
						pixbuf.pixel(0, r.height - 1, px2);
 | 
											pixbuf.pixel(0, r.height - 1, px2);
 | 
				
			||||||
						pixbuf.pixel(r.width - 1, r.height - 1, px3);
 | 
											pixbuf.pixel(r.width - 1, r.height - 1, px3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						pixbuf.paste(wd->root, r.x, r.y);
 | 
											pixbuf.paste(wd->root, { r.x, r.y });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						std::vector<typename window_layer::wd_rectangle> overlaps;
 | 
											std::vector<typename window_layer::wd_rectangle> overlaps;
 | 
				
			||||||
						if(window_layer::read_overlaps(wd, visual, overlaps))
 | 
											if(window_layer::read_overlaps(wd, visual, overlaps))
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										59
									
								
								include/nana/gui/widgets/group.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								include/nana/gui/widgets/group.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *	A group widget implementation
 | 
				
			||||||
 | 
					 *	Nana C++ Library(http://www.nanaro.org)
 | 
				
			||||||
 | 
					 *	Copyright(C) 2015 Jinhao(cnjinhao@hotmail.com)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	Distributed under the Boost Software License, Version 1.0. 
 | 
				
			||||||
 | 
					 *	(See accompanying file LICENSE_1_0.txt or copy at 
 | 
				
			||||||
 | 
					 *	http://www.boost.org/LICENSE_1_0.txt)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	@file: nana/gui/widgets/group.hpp
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	@Author: Stefan Pfeifer(st-321), Ariel Vina-Rodriguez (qPCR4vir)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	@brief group is a widget used to visually group and layout other widgets.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef NANA_GUI_WIDGETS_GROUP_HPP
 | 
				
			||||||
 | 
					#define NANA_GUI_WIDGETS_GROUP_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nana/gui/place.hpp>
 | 
				
			||||||
 | 
					#include <nana/gui/widgets/panel.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace nana{
 | 
				
			||||||
 | 
						class group
 | 
				
			||||||
 | 
							: public panel<true>
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							struct implement;
 | 
				
			||||||
 | 
						public:
 | 
				
			||||||
 | 
							group(	window    parent,         ///< 
 | 
				
			||||||
 | 
									std::wstring    titel_ ={STR("")},     ///< 
 | 
				
			||||||
 | 
									bool      format =false,  ///< Use a formated label?
 | 
				
			||||||
 | 
									unsigned  gap =2,         ///< betwen the content  and the external limit
 | 
				
			||||||
 | 
									rectangle r ={}           ///<
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							~group();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							place& get_place();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							template<typename Widget, typename ...Args>
 | 
				
			||||||
 | 
							Widget* create_child(const char* field, Args && ... args)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								auto wdg = new Widget(inner(), std::forward<Args>(args)...);
 | 
				
			||||||
 | 
								_m_add_child(field, wdg);
 | 
				
			||||||
 | 
								return wdg;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							window inner();
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
							void _m_add_child(const char* field, widget*);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							::nana::string _m_caption() const override;
 | 
				
			||||||
 | 
							void _m_caption(::nana::string&&) override;
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
							std::unique_ptr<implement> impl_;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}//end namespace nana
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
@ -576,7 +576,7 @@ namespace nana{ namespace widgets{	namespace skeletons
 | 
				
			|||||||
			if(size_ != image_.size())
 | 
								if(size_ != image_.size())
 | 
				
			||||||
				image_.stretch(::nana::rectangle{ image_.size() }, graph, nana::rectangle(x, y, size_.width, size_.height));
 | 
									image_.stretch(::nana::rectangle{ image_.size() }, graph, nana::rectangle(x, y, size_.width, size_.height));
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				image_.paste(graph, x, y);
 | 
									image_.paste(graph, point{ x, y });
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		virtual const nana::size & size() const override
 | 
							virtual const nana::size & size() const override
 | 
				
			||||||
 | 
				
			|||||||
@ -20,7 +20,7 @@ namespace nana{	namespace paint{
 | 
				
			|||||||
		virtual bool empty() const = 0;
 | 
							virtual bool empty() const = 0;
 | 
				
			||||||
		virtual void close() = 0;
 | 
							virtual void close() = 0;
 | 
				
			||||||
		virtual nana::size size() const = 0;
 | 
							virtual nana::size size() const = 0;
 | 
				
			||||||
		virtual void paste(const nana::rectangle& src_r, graph_reference dst, int x, int y) const = 0;
 | 
							virtual void paste(const nana::rectangle& src_r, graph_reference dst, const point& p_dst) const = 0;
 | 
				
			||||||
		virtual void stretch(const nana::rectangle& src_r, graph_reference dst, const nana::rectangle& r) const = 0;
 | 
							virtual void stretch(const nana::rectangle& src_r, graph_reference dst, const nana::rectangle& r) const = 0;
 | 
				
			||||||
	};//end class image::image_impl_interface
 | 
						};//end class image::image_impl_interface
 | 
				
			||||||
}//end namespace paint
 | 
					}//end namespace paint
 | 
				
			||||||
 | 
				
			|||||||
@ -43,7 +43,7 @@ namespace paint
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		bool alpha() const;
 | 
							bool alpha() const;
 | 
				
			||||||
		nana::size size() const;
 | 
							nana::size size() const;
 | 
				
			||||||
		void paste(graphics& dst, int x, int y) const;
 | 
							void paste(graphics& dst, const point& p_dst) const;
 | 
				
			||||||
		void paste(const nana::rectangle& r_src, graphics& dst, const point& p_dst) const;///< Paste the area of picture specified by r_src into the destination graphics specified by dst at position p_dst.
 | 
							void paste(const nana::rectangle& r_src, graphics& dst, const point& p_dst) const;///< Paste the area of picture specified by r_src into the destination graphics specified by dst at position p_dst.
 | 
				
			||||||
		void stretch(const nana::rectangle& r_src, graphics& dst, const nana::rectangle& r_dst) const;///<Paste the picture into the dst, stretching or compressing the picture to fit the given area.
 | 
							void stretch(const nana::rectangle& r_src, graphics& dst, const nana::rectangle& r_dst) const;///<Paste the picture into the dst, stretching or compressing the picture to fit the given area.
 | 
				
			||||||
	private:
 | 
						private:
 | 
				
			||||||
 | 
				
			|||||||
@ -76,9 +76,9 @@ namespace nana{	namespace paint
 | 
				
			|||||||
		pixel_color_t pixel(int x, int y) const;
 | 
							pixel_color_t pixel(int x, int y) const;
 | 
				
			||||||
		void pixel(int x, int y, pixel_color_t);
 | 
							void pixel(int x, int y, pixel_color_t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		void paste(drawable_type, int x, int y) const;
 | 
							void paste(drawable_type, const point& p_dst) const;
 | 
				
			||||||
		void paste(const nana::rectangle& s_r, drawable_type, int x, int y) const;
 | 
							void paste(const nana::rectangle& s_r, drawable_type, const point& p_dst) const;
 | 
				
			||||||
		void paste(native_window_type, int x, int y) const;
 | 
							void paste(native_window_type, const point& p_dst) const;
 | 
				
			||||||
		void stretch(const std::string& name);
 | 
							void stretch(const std::string& name);
 | 
				
			||||||
		void stretch(const nana::rectangle& s_r, drawable_type, const nana::rectangle& r) const;
 | 
							void stretch(const nana::rectangle& s_r, drawable_type, const nana::rectangle& r) const;
 | 
				
			||||||
		void blend(const std::string& name);
 | 
							void blend(const std::string& name);
 | 
				
			||||||
 | 
				
			|||||||
@ -201,7 +201,7 @@ namespace nana
 | 
				
			|||||||
				case frame::kind::oneshot:
 | 
									case frame::kind::oneshot:
 | 
				
			||||||
					_m_render(outs, [&frmobj](paint::graphics& tar, const nana::point& pos)
 | 
										_m_render(outs, [&frmobj](paint::graphics& tar, const nana::point& pos)
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						frmobj.u.oneshot->paste(tar, pos.x, pos.y);
 | 
											frmobj.u.oneshot->paste(tar, pos);
 | 
				
			||||||
					});
 | 
										});
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
				case frame::kind::framebuilder:
 | 
									case frame::kind::framebuilder:
 | 
				
			||||||
@ -230,7 +230,7 @@ namespace nana
 | 
				
			|||||||
				switch(frmobj.type)
 | 
									switch(frmobj.type)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				case frame::kind::oneshot:
 | 
									case frame::kind::oneshot:
 | 
				
			||||||
					frmobj.u.oneshot->paste(graph, pos.x, pos.y);
 | 
										frmobj.u.oneshot->paste(graph, pos);
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
				case frame::kind::framebuilder:
 | 
									case frame::kind::framebuilder:
 | 
				
			||||||
					if(rebuild_frame)
 | 
										if(rebuild_frame)
 | 
				
			||||||
 | 
				
			|||||||
@ -258,7 +258,7 @@ namespace nana{	namespace drawerbase
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if(attr_.icon)
 | 
								if(attr_.icon)
 | 
				
			||||||
				attr_.icon->paste(graph, 3, (gsize.height - icon_sz.height) / 2);
 | 
									attr_.icon->paste(graph, point{ 3, static_cast<int>(gsize.height - icon_sz.height) / 2 });
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		void trigger::_m_draw(graph_reference graph)
 | 
							void trigger::_m_draw(graph_reference graph)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										113
									
								
								source/gui/widgets/group.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								source/gui/widgets/group.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,113 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *	A group widget implementation
 | 
				
			||||||
 | 
					 *	Nana C++ Library(http://www.nanaro.org)
 | 
				
			||||||
 | 
					 *	Copyright(C) 2015 Jinhao(cnjinhao@hotmail.com)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	Distributed under the Boost Software License, Version 1.0. 
 | 
				
			||||||
 | 
					 *	(See accompanying file LICENSE_1_0.txt or copy at 
 | 
				
			||||||
 | 
					 *	http://www.boost.org/LICENSE_1_0.txt)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	@file: nana/gui/widgets/group.cpp
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	@Author: Stefan Pfeifer(st-321), Ariel Vina-Rodriguez (qPCR4vir)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	@brief group is a widget used to visually group and layout other widgets.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nana/gui/widgets/group.hpp>
 | 
				
			||||||
 | 
					#include <nana/gui/widgets/label.hpp>
 | 
				
			||||||
 | 
					#include <nana/gui/drawing.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace nana{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						struct group::implement
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							label			caption;
 | 
				
			||||||
 | 
							panel<false>	content;
 | 
				
			||||||
 | 
							place place_outter;
 | 
				
			||||||
 | 
							place place_content;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							implement(group* host):
 | 
				
			||||||
 | 
								caption(*host),
 | 
				
			||||||
 | 
								content(*host),
 | 
				
			||||||
 | 
								place_outter(*host),
 | 
				
			||||||
 | 
								place_content(content)
 | 
				
			||||||
 | 
							{}
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						group::group(	window    parent,              ///<
 | 
				
			||||||
 | 
										std::wstring    titel_ /*={}*/,     ///<
 | 
				
			||||||
 | 
										bool      format /*=false*/,  ///<
 | 
				
			||||||
 | 
										unsigned  gap /*=2*/,         ///<
 | 
				
			||||||
 | 
										rectangle r /*={} */          ///<
 | 
				
			||||||
 | 
					              )
 | 
				
			||||||
 | 
								  :	panel (parent, r),
 | 
				
			||||||
 | 
									impl_(new implement(this))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							impl_->caption.format(format);
 | 
				
			||||||
 | 
							::nana::size sz = impl_->caption.measure(1000);
 | 
				
			||||||
 | 
							std::stringstream ft;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							ft << "vert margin=[0," << gap << ","<<gap<<","<<gap<<"]"
 | 
				
			||||||
 | 
							   << " <weight=" << sz.height << " <weight=5> <titel weight=" << sz.width+1 << "> >"
 | 
				
			||||||
 | 
							   << " <content>";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							auto & outter = impl_->place_outter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							outter.div(ft.str().c_str());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							outter["titel"] << impl_->caption;
 | 
				
			||||||
 | 
							outter["content"] << impl_->content;
 | 
				
			||||||
 | 
							outter.collocate();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							color pbg =  API::bgcolor( parent);
 | 
				
			||||||
 | 
							impl_->caption.bgcolor(pbg.blend(colors::black, 0.975) );
 | 
				
			||||||
 | 
							color bg=pbg.blend(colors::black, 0.950 );
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							bgcolor(pbg);
 | 
				
			||||||
 | 
							impl_->content.bgcolor(bg);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							drawing dw(*this);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// This drawing function is owner by the onwer of dw (the outer panel of the group widget), not by dw !!
 | 
				
			||||||
 | 
							dw.draw([gap, sz, bg, pbg](paint::graphics& graph)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								graph.rectangle(true, pbg);
 | 
				
			||||||
 | 
								graph.round_rectangle(rectangle(point(gap - 1, sz.height / 2),
 | 
				
			||||||
 | 
									nana::size(graph.width() - 2 * (gap - 1), graph.height() - sz.height / 2 - (gap - 1))
 | 
				
			||||||
 | 
									),
 | 
				
			||||||
 | 
									3, 3, colors::gray_border, true, bg);
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						group::~group()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						place& group::get_place()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return impl_->place_content;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						window group::inner()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return impl_->content;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void group::_m_add_child(const char* field, widget* wdg)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							impl_->place_content[field] << wdg->handle();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						::nana::string group::_m_caption() const
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return impl_->caption.caption();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void group::_m_caption(::nana::string&& str)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return impl_->caption.caption(std::move(str));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}//end namespace nana
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2534,8 +2534,34 @@ namespace nana{	namespace widgets
 | 
				
			|||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							std::size_t eat_endl(const wchar_t* str, std::size_t pos)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								auto ch = str[pos];
 | 
				
			||||||
 | 
								if (0 == ch)
 | 
				
			||||||
 | 
									return pos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								const wchar_t * endlstr;
 | 
				
			||||||
 | 
								switch (ch)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								case L'\n':
 | 
				
			||||||
 | 
									endlstr = L"\n\r";
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
								case L'\r':
 | 
				
			||||||
 | 
									endlstr = L"\r\n";
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return pos;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (std::memcmp(str + pos, endlstr, sizeof(wchar_t) * 2) == 0)
 | 
				
			||||||
 | 
									return pos + 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return pos + 1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		bool text_editor::_m_resolve_text(const nana::string& text, std::vector<std::pair<std::size_t, std::size_t>> & lines)
 | 
							bool text_editor::_m_resolve_text(const nana::string& text, std::vector<std::pair<std::size_t, std::size_t>> & lines)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								auto const text_str = text.data();
 | 
				
			||||||
			std::size_t begin = 0;
 | 
								std::size_t begin = 0;
 | 
				
			||||||
			while (true)
 | 
								while (true)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
@ -2548,13 +2574,23 @@ namespace nana{	namespace widgets
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				lines.emplace_back(begin, pos);
 | 
									lines.emplace_back(begin, pos);
 | 
				
			||||||
				begin = text.find_first_not_of(STR("\r\n"), pos + 1);
 | 
					
 | 
				
			||||||
 | 
									pos = eat_endl(text_str, pos);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									begin = text.find_first_not_of(STR("\r\n"), pos);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				//The number of new lines minus one
 | 
									//The number of new lines minus one
 | 
				
			||||||
				const auto chp_end = text.data() + (begin == text.npos ? text.size() : begin);
 | 
									const auto chp_end = text_str + (begin == text.npos ? text.size() : begin);
 | 
				
			||||||
				for (auto chp = text.data() + (pos + 1); chp != chp_end; ++chp)
 | 
					
 | 
				
			||||||
					if (*chp == '\n')
 | 
									for (auto chp = text_str + pos; chp != chp_end; ++chp)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										auto eats = eat_endl(chp, 0);
 | 
				
			||||||
 | 
										if (eats)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
						lines.emplace_back(0, 0);
 | 
											lines.emplace_back(0, 0);
 | 
				
			||||||
 | 
											chp += (eats - 1);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (text.npos == begin)
 | 
									if (text.npos == begin)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@ -2760,19 +2796,12 @@ namespace nana{	namespace widgets
 | 
				
			|||||||
					auto ent_end = (ent.end < str_end ? ent.end : str_end);
 | 
										auto ent_end = (ent.end < str_end ? ent.end : str_end);
 | 
				
			||||||
					auto ent_pixels = std::accumulate(glyphs + (ent_begin - str), glyphs + (ent_end - str), unsigned{});
 | 
										auto ent_pixels = std::accumulate(glyphs + (ent_begin - str), glyphs + (ent_end - str), unsigned{});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						if (ent.scheme->bgcolor.invisible())
 | 
										canvas.set_color(ent.scheme->bgcolor.invisible() ? _m_bgcolor() : ent.scheme->bgcolor);
 | 
				
			||||||
							canvas.set_color(_m_bgcolor());
 | 
										canvas.set_text_color(ent.scheme->fgcolor.invisible() ? fgcolor : ent.scheme->fgcolor);
 | 
				
			||||||
						else
 | 
					
 | 
				
			||||||
							canvas.set_color(ent.scheme->bgcolor);
 | 
					 | 
				
			||||||
					canvas.rectangle(true);
 | 
										canvas.rectangle(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						if (ent.scheme->fgcolor.invisible())
 | 
					 | 
				
			||||||
							canvas.set_text_color(fgcolor);
 | 
					 | 
				
			||||||
						else
 | 
					 | 
				
			||||||
							canvas.set_text_color(ent.scheme->fgcolor);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					ent_pos.x += ent_off;
 | 
										ent_pos.x += ent_off;
 | 
				
			||||||
 | 
					 | 
				
			||||||
					if (rtl)
 | 
										if (rtl)
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						//draw the whole text if it is a RTL text, because Arbic language is transformable.
 | 
											//draw the whole text if it is a RTL text, because Arbic language is transformable.
 | 
				
			||||||
@ -2797,7 +2826,6 @@ namespace nana{	namespace widgets
 | 
				
			|||||||
			if (if_mask && mask_char_)
 | 
								if (if_mask && mask_char_)
 | 
				
			||||||
				mask_str.reset(new nana::string(str.size(), mask_char_));
 | 
									mask_str.reset(new nana::string(str.size(), mask_char_));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
			auto & linestr = (if_mask && mask_char_ ? *mask_str : str);
 | 
								auto & linestr = (if_mask && mask_char_ ? *mask_str : str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			unicode_bidi bidi;
 | 
								unicode_bidi bidi;
 | 
				
			||||||
 | 
				
			|||||||
@ -1263,7 +1263,7 @@ namespace nana
 | 
				
			|||||||
								img->stretch(::nana::rectangle{ size }, graph, attr.area);
 | 
													img->stretch(::nana::rectangle{ size }, graph, attr.area);
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
							else
 | 
												else
 | 
				
			||||||
								img->paste(graph, attr.area.x + static_cast<int>(attr.area.width - size.width) / 2, attr.area.y + static_cast<int>(attr.area.height - size.height) / 2);
 | 
													img->paste(graph, point{ attr.area.x + static_cast<int>(attr.area.width - size.width) / 2, attr.area.y + static_cast<int>(attr.area.height - size.height) / 2 });
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,7 @@
 | 
				
			|||||||
#ifndef NANA_PAINT_DETAIL_IMAGE_BMP_HPP
 | 
					#ifndef NANA_PAINT_DETAIL_IMAGE_BMP_HPP
 | 
				
			||||||
#define NANA_PAINT_DETAIL_IMAGE_BMP_HPP
 | 
					#define NANA_PAINT_DETAIL_IMAGE_BMP_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "image_impl_interface.hpp"
 | 
					#include <nana/paint/detail/image_impl_interface.hpp>
 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace nana{	namespace paint
 | 
					namespace nana{	namespace paint
 | 
				
			||||||
@ -75,7 +75,7 @@ namespace nana{	namespace paint
 | 
				
			|||||||
				this->close();
 | 
									this->close();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			bool open(const nana::char_t* filename)
 | 
								bool open(const nana::char_t* filename) override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if(nullptr == filename) return false;
 | 
									if(nullptr == filename) return false;
 | 
				
			||||||
				std::ifstream ifs;
 | 
									std::ifstream ifs;
 | 
				
			||||||
@ -330,33 +330,33 @@ namespace nana{	namespace paint
 | 
				
			|||||||
				return (false == pixbuf_.empty());
 | 
									return (false == pixbuf_.empty());
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			bool alpha_channel() const
 | 
								bool alpha_channel() const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				return false;
 | 
									return false;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			bool empty() const
 | 
								bool empty() const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				return pixbuf_.empty();
 | 
									return pixbuf_.empty();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			void close()
 | 
								void close() override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				pixbuf_.close();
 | 
									pixbuf_.close();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			nana::size size() const
 | 
								nana::size size() const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				return pixbuf_.size();
 | 
									return pixbuf_.size();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			void paste(const nana::rectangle& src_r, graph_reference graph, int x, int y) const
 | 
								void paste(const nana::rectangle& src_r, graph_reference graph, const point& p_dst) const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if(graph && pixbuf_)
 | 
									if(graph && pixbuf_)
 | 
				
			||||||
					pixbuf_.paste(src_r, graph.handle(), x, y);
 | 
										pixbuf_.paste(src_r, graph.handle(), p_dst);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			void stretch(const nana::rectangle& src_r, graph_reference graph, const nana::rectangle& r) const
 | 
								void stretch(const nana::rectangle& src_r, graph_reference graph, const nana::rectangle& r) const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if(graph && pixbuf_)
 | 
									if(graph && pixbuf_)
 | 
				
			||||||
					pixbuf_.stretch(src_r, graph.handle(), r);
 | 
										pixbuf_.stretch(src_r, graph.handle(), r);
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
#ifndef NANA_PAINT_DETAIL_IMAGE_ICO_HPP
 | 
					#ifndef NANA_PAINT_DETAIL_IMAGE_ICO_HPP
 | 
				
			||||||
#define NANA_PAINT_DETAIL_IMAGE_ICO_HPP
 | 
					#define NANA_PAINT_DETAIL_IMAGE_ICO_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "image_impl_interface.hpp"
 | 
					#include <nana/paint/detail/image_impl_interface.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace nana{	namespace paint
 | 
					namespace nana{	namespace paint
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -22,13 +22,13 @@ namespace nana{	namespace paint
 | 
				
			|||||||
		public:
 | 
							public:
 | 
				
			||||||
			image_ico(bool is_ico);
 | 
								image_ico(bool is_ico);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			bool open(const nana::char_t* filename);
 | 
								bool open(const nana::char_t* filename) override;
 | 
				
			||||||
			bool alpha_channel() const;
 | 
								bool alpha_channel() const override;
 | 
				
			||||||
			bool empty() const;
 | 
								bool empty() const override;
 | 
				
			||||||
			void close();
 | 
								void close() override;
 | 
				
			||||||
			nana::size size() const;
 | 
								nana::size size() const override;
 | 
				
			||||||
			virtual void paste(const nana::rectangle& src_r, graph_reference graph, int x, int y) const;
 | 
								virtual void paste(const nana::rectangle& src_r, graph_reference graph, const point& p_dst) const override;
 | 
				
			||||||
			virtual void stretch(const nana::rectangle&, graph_reference graph, const nana::rectangle& r) const;
 | 
								virtual void stretch(const nana::rectangle&, graph_reference graph, const nana::rectangle& r) const override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			const ptr_t & ptr() const;
 | 
								const ptr_t & ptr() const;
 | 
				
			||||||
		private:
 | 
							private:
 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
#ifndef NANA_PAINT_DETAIL_IMAGE_PNG_HPP
 | 
					#ifndef NANA_PAINT_DETAIL_IMAGE_PNG_HPP
 | 
				
			||||||
#define NANA_PAINT_DETAIL_IMAGE_PNG_HPP
 | 
					#define NANA_PAINT_DETAIL_IMAGE_PNG_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "image_impl_interface.hpp"
 | 
					#include <nana/paint/detail/image_impl_interface.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//Separate the libpng from the package that system provides.
 | 
					//Separate the libpng from the package that system provides.
 | 
				
			||||||
#if defined(NANA_LIBPNG)
 | 
					#if defined(NANA_LIBPNG)
 | 
				
			||||||
@ -11,7 +11,7 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include "../pixel_buffer.hpp"
 | 
					#include <nana/paint/pixel_buffer.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace nana
 | 
					namespace nana
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -25,7 +25,7 @@ namespace nana
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			bool open(const nana::char_t* png_file)
 | 
								bool open(const nana::char_t* png_file) override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
#ifdef NANA_UNICODE
 | 
					#ifdef NANA_UNICODE
 | 
				
			||||||
				FILE * fp = ::fopen(static_cast<std::string>(nana::charset(png_file)).c_str(), "rb");
 | 
									FILE * fp = ::fopen(static_cast<std::string>(nana::charset(png_file)).c_str(), "rb");
 | 
				
			||||||
@ -148,32 +148,32 @@ namespace nana
 | 
				
			|||||||
				return is_opened;
 | 
									return is_opened;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			bool alpha_channel() const
 | 
								bool alpha_channel() const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				return pixbuf_.alpha_channel();
 | 
									return pixbuf_.alpha_channel();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			virtual bool empty() const
 | 
								virtual bool empty() const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				return pixbuf_.empty();
 | 
									return pixbuf_.empty();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			virtual void close()
 | 
								virtual void close() override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				pixbuf_.close();
 | 
									pixbuf_.close();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			virtual nana::size size() const
 | 
								virtual nana::size size() const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				return pixbuf_.size();
 | 
									return pixbuf_.size();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			void paste(const nana::rectangle& src_r, graph_reference graph, int x, int y) const
 | 
								void paste(const nana::rectangle& src_r, graph_reference graph, const point& p_dst) const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				pixbuf_.paste(src_r, graph.handle(), x, y);
 | 
									pixbuf_.paste(src_r, graph.handle(), p_dst);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			void stretch(const nana::rectangle& src_r, graph_reference dst, const nana::rectangle& r) const
 | 
								void stretch(const nana::rectangle& src_r, graph_reference dst, const nana::rectangle& r) const override
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				pixbuf_.stretch(src_r, dst.handle(), r);
 | 
									pixbuf_.stretch(src_r, dst.handle(), r);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@ -100,8 +100,8 @@ namespace detail
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	void blend(drawable_type dw, const rectangle& area, pixel_color_t color, double fade_rate)
 | 
						void blend(drawable_type dw, const rectangle& area, pixel_color_t color, double fade_rate)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if(fade_rate <= 0) return;
 | 
							if (fade_rate <= 0) return;
 | 
				
			||||||
		if(fade_rate > 1) fade_rate = 1;
 | 
							if (fade_rate > 1) fade_rate = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		rectangle r;
 | 
							rectangle r;
 | 
				
			||||||
		if (false == ::nana::overlap(rectangle{ drawable_size(dw) }, area, r))
 | 
							if (false == ::nana::overlap(rectangle{ drawable_size(dw) }, area, r))
 | 
				
			||||||
@ -114,11 +114,11 @@ namespace detail
 | 
				
			|||||||
		double lrate = 1 - fade_rate;
 | 
							double lrate = 1 - fade_rate;
 | 
				
			||||||
		pixel_buffer pixbuf(dw, r.y, r.height);
 | 
							pixel_buffer pixbuf(dw, r.y, r.height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for(std::size_t row = 0; row < r.height; ++row)
 | 
							for (std::size_t row = 0; row < r.height; ++row)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			auto i = pixbuf.raw_ptr(row) + r.x;
 | 
								auto i = pixbuf.raw_ptr(row) + r.x;
 | 
				
			||||||
			const auto end = i + r.width;
 | 
								const auto end = i + r.width;
 | 
				
			||||||
			for(; i < end; ++i)
 | 
								for (; i < end; ++i)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				unsigned px_r = ((static_cast<unsigned>((i->value & 0xFF0000) * lrate) + red) & 0xFF0000);
 | 
									unsigned px_r = ((static_cast<unsigned>((i->value & 0xFF0000) * lrate) + red) & 0xFF0000);
 | 
				
			||||||
				unsigned px_g = ((static_cast<unsigned>((i->value & 0xFF00) * lrate) + green) & 0xFF00);
 | 
									unsigned px_g = ((static_cast<unsigned>((i->value & 0xFF00) * lrate) + green) & 0xFF00);
 | 
				
			||||||
@ -126,7 +126,7 @@ namespace detail
 | 
				
			|||||||
				i->value = (px_r | px_g | px_b);
 | 
									i->value = (px_r | px_g | px_b);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		pixbuf.paste(nana::rectangle(r.x, 0, r.width, r.height), dw, r.x, r.y);
 | 
							pixbuf.paste(nana::rectangle(r.x, 0, r.width, r.height), dw, point{r.x, r.y});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nana::size raw_text_extent_size(drawable_type dw, const nana::char_t* text, std::size_t len)
 | 
						nana::size raw_text_extent_size(drawable_type dw, const nana::char_t* text, std::size_t len)
 | 
				
			||||||
 | 
				
			|||||||
@ -618,7 +618,7 @@ namespace paint
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
				pixel_buffer pixbuf(handle_, 0, 0);
 | 
									pixel_buffer pixbuf(handle_, 0, 0);
 | 
				
			||||||
				pixbuf.blur(r, radius);
 | 
									pixbuf.blur(r, radius);
 | 
				
			||||||
				pixbuf.paste(handle_, 0, 0);
 | 
									pixbuf.paste(handle_, point{});
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -677,7 +677,7 @@ namespace paint
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
				delete [] tablebuf;
 | 
									delete [] tablebuf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				pixbuf.paste(handle_, 0, 0);
 | 
									pixbuf.paste(handle_, point{});
 | 
				
			||||||
				if(changed_ == false) changed_ = true;
 | 
									if(changed_ == false) changed_ = true;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -1074,7 +1074,7 @@ namespace paint
 | 
				
			|||||||
			if (pxbuf_.open(handle_))
 | 
								if (pxbuf_.open(handle_))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				pxbuf_.gradual_rectangle(rct, from, to, 0.0, vertical);
 | 
									pxbuf_.gradual_rectangle(rct, from, to, 0.0, vertical);
 | 
				
			||||||
				pxbuf_.paste(handle_, 0, 0);
 | 
									pxbuf_.paste(handle_, point{});
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
#elif defined(NANA_X11)
 | 
					#elif defined(NANA_X11)
 | 
				
			||||||
			if (nullptr == handle_) return;
 | 
								if (nullptr == handle_) return;
 | 
				
			||||||
 | 
				
			|||||||
@ -16,14 +16,15 @@
 | 
				
			|||||||
#include <algorithm>
 | 
					#include <algorithm>
 | 
				
			||||||
#include <fstream>
 | 
					#include <fstream>
 | 
				
			||||||
#include <iterator>
 | 
					#include <iterator>
 | 
				
			||||||
 | 
					#include <stdexcept>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <nana/paint/detail/image_impl_interface.hpp>
 | 
					#include <nana/paint/detail/image_impl_interface.hpp>
 | 
				
			||||||
#include <nana/paint/pixel_buffer.hpp>
 | 
					#include <nana/paint/pixel_buffer.hpp>
 | 
				
			||||||
#if defined(NANA_ENABLE_PNG)
 | 
					#if defined(NANA_ENABLE_PNG)
 | 
				
			||||||
	#include <nana/paint/detail/image_png.hpp>
 | 
						#include "detail/image_png.hpp"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#include <nana/paint/detail/image_bmp.hpp>
 | 
					#include "detail/image_bmp.hpp"
 | 
				
			||||||
#include <nana/paint/detail/image_ico.hpp>
 | 
					#include "detail/image_ico.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace nana
 | 
					namespace nana
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -89,12 +90,12 @@ namespace paint
 | 
				
			|||||||
				return size_;
 | 
									return size_;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			void image_ico::paste(const nana::rectangle& src_r, graph_reference graph, int x, int y) const
 | 
								void image_ico::paste(const nana::rectangle& src_r, graph_reference graph, const point& p_dst) const
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if(ptr_ && (graph.empty() == false))
 | 
									if(ptr_ && (graph.empty() == false))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
#if defined(NANA_WINDOWS)
 | 
					#if defined(NANA_WINDOWS)
 | 
				
			||||||
					::DrawIconEx(graph.handle()->context, x, y, *ptr_, src_r.width, src_r.height, 0, 0, DI_NORMAL);
 | 
										::DrawIconEx(graph.handle()->context, p_dst.x, p_dst.y, *ptr_, src_r.width, src_r.height, 0, 0, DI_NORMAL);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@ -260,22 +261,40 @@ namespace paint
 | 
				
			|||||||
			return (image_ptr_ ? image_ptr_->size() : nana::size());
 | 
								return (image_ptr_ ? image_ptr_->size() : nana::size());
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		void image::paste(graphics& dst, int x, int y) const
 | 
							void image::paste(graphics& dst, const point& p_dst) const
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if(image_ptr_)
 | 
								if(image_ptr_ && !dst.empty())
 | 
				
			||||||
				image_ptr_->paste(::nana::rectangle{ image_ptr_->size() }, dst, x, y);
 | 
									image_ptr_->paste(::nana::rectangle{ image_ptr_->size() }, dst, p_dst);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (!image_ptr_)
 | 
				
			||||||
 | 
									throw std::runtime_error("image is empty");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (dst.empty())
 | 
				
			||||||
 | 
									throw std::invalid_argument("graphics is empty");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		void image::paste(const nana::rectangle& r_src, graphics & dst, const nana::point& p_dst) const
 | 
							void image::paste(const nana::rectangle& r_src, graphics & dst, const nana::point& p_dst) const
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if(image_ptr_)
 | 
								if(image_ptr_ && !dst.empty())
 | 
				
			||||||
				image_ptr_->paste(r_src, dst, p_dst.x, p_dst.y);		
 | 
									image_ptr_->paste(r_src, dst, p_dst);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (!image_ptr_)
 | 
				
			||||||
 | 
									throw std::runtime_error("image is empty");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (dst.empty())
 | 
				
			||||||
 | 
									throw std::invalid_argument("graphics is empty");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		void image::stretch(const nana::rectangle& r_src, graphics& dst, const nana::rectangle & r_dst) const
 | 
							void image::stretch(const nana::rectangle& r_src, graphics& dst, const nana::rectangle & r_dst) const
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if(image_ptr_)
 | 
								if(image_ptr_ && !dst.empty())
 | 
				
			||||||
				image_ptr_->stretch(r_src, dst, r_dst);
 | 
									image_ptr_->stretch(r_src, dst, r_dst);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (!image_ptr_)
 | 
				
			||||||
 | 
									throw std::runtime_error("image is empty");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (dst.empty())
 | 
				
			||||||
 | 
									throw std::invalid_argument("graphics is empty");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	//end class image
 | 
						//end class image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -633,13 +633,13 @@ namespace nana{	namespace paint
 | 
				
			|||||||
			*reinterpret_cast<pixel_color_t*>(reinterpret_cast<char*>(sp->raw_pixel_buffer + x) + y * sp->bytes_per_line) = px;
 | 
								*reinterpret_cast<pixel_color_t*>(reinterpret_cast<char*>(sp->raw_pixel_buffer + x) + y * sp->bytes_per_line) = px;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void pixel_buffer::paste(drawable_type drawable, int x, int y) const
 | 
						void pixel_buffer::paste(drawable_type drawable, const point& p_dst) const
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if(storage_)
 | 
							if(storage_)
 | 
				
			||||||
			paste(nana::rectangle(storage_->pixel_size), drawable, x, y);
 | 
								paste(nana::rectangle(storage_->pixel_size), drawable, p_dst);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void pixel_buffer::paste(const nana::rectangle& src_r, drawable_type drawable, int x, int y) const
 | 
						void pixel_buffer::paste(const nana::rectangle& src_r, drawable_type drawable, const point& p_dst) const
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		auto sp = storage_.get();
 | 
							auto sp = storage_.get();
 | 
				
			||||||
		if(drawable && sp)
 | 
							if(drawable && sp)
 | 
				
			||||||
@ -647,7 +647,7 @@ namespace nana{	namespace paint
 | 
				
			|||||||
			if(sp->alpha_channel)
 | 
								if(sp->alpha_channel)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				nana::rectangle s_good_r, d_good_r;
 | 
									nana::rectangle s_good_r, d_good_r;
 | 
				
			||||||
				if(overlap(src_r, sp->pixel_size, nana::rectangle(x, y, src_r.width, src_r.height), paint::detail::drawable_size(drawable), s_good_r, d_good_r))
 | 
									if(overlap(src_r, sp->pixel_size, nana::rectangle(p_dst.x, p_dst.y, src_r.width, src_r.height), paint::detail::drawable_size(drawable), s_good_r, d_good_r))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					pixel_buffer d_pixbuf;
 | 
										pixel_buffer d_pixbuf;
 | 
				
			||||||
					d_pixbuf.attach(drawable, d_good_r);
 | 
										d_pixbuf.attach(drawable, d_good_r);
 | 
				
			||||||
@ -660,16 +660,16 @@ namespace nana{	namespace paint
 | 
				
			|||||||
			assign_windows_bitmapinfo(sp->pixel_size, bi);
 | 
								assign_windows_bitmapinfo(sp->pixel_size, bi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			::SetDIBitsToDevice(drawable->context,
 | 
								::SetDIBitsToDevice(drawable->context,
 | 
				
			||||||
				x, y, src_r.width, src_r.height,
 | 
									p_dst.x, p_dst.y, src_r.width, src_r.height,
 | 
				
			||||||
				src_r.x, static_cast<int>(sp->pixel_size.height) - src_r.y - src_r.height, 0, sp->pixel_size.height,
 | 
									src_r.x, static_cast<int>(sp->pixel_size.height) - src_r.y - src_r.height, 0, sp->pixel_size.height,
 | 
				
			||||||
				sp->raw_pixel_buffer, &bi, DIB_RGB_COLORS);
 | 
									sp->raw_pixel_buffer, &bi, DIB_RGB_COLORS);
 | 
				
			||||||
#elif defined(NANA_X11)
 | 
					#elif defined(NANA_X11)
 | 
				
			||||||
			sp->put(drawable->pixmap, drawable->context, src_r.x, src_r.y, x, y, src_r.width, src_r.height);
 | 
								sp->put(drawable->pixmap, drawable->context, src_r.x, src_r.y, p_dst.x, p_dst.y, src_r.width, src_r.height);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void pixel_buffer::paste(native_window_type wd, int x, int y) const
 | 
						void pixel_buffer::paste(native_window_type wd, const point& p_dst) const
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		auto sp = storage_.get();
 | 
							auto sp = storage_.get();
 | 
				
			||||||
		if(nullptr == wd || nullptr == sp)	return;
 | 
							if(nullptr == wd || nullptr == sp)	return;
 | 
				
			||||||
@ -681,7 +681,7 @@ namespace nana{	namespace paint
 | 
				
			|||||||
			assign_windows_bitmapinfo(sp->pixel_size, bi);
 | 
								assign_windows_bitmapinfo(sp->pixel_size, bi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			::SetDIBitsToDevice(handle,
 | 
								::SetDIBitsToDevice(handle,
 | 
				
			||||||
				x, y, sp->pixel_size.width, sp->pixel_size.height,
 | 
									p_dst.x, p_dst.y, sp->pixel_size.width, sp->pixel_size.height,
 | 
				
			||||||
				0, 0, 0, sp->pixel_size.height,
 | 
									0, 0, 0, sp->pixel_size.height,
 | 
				
			||||||
				sp->raw_pixel_buffer, &bi, DIB_RGB_COLORS);
 | 
									sp->raw_pixel_buffer, &bi, DIB_RGB_COLORS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -690,7 +690,7 @@ namespace nana{	namespace paint
 | 
				
			|||||||
#elif defined(NANA_X11)
 | 
					#elif defined(NANA_X11)
 | 
				
			||||||
		auto & spec = nana::detail::platform_spec::instance();
 | 
							auto & spec = nana::detail::platform_spec::instance();
 | 
				
			||||||
		Display * disp = spec.open_display();
 | 
							Display * disp = spec.open_display();
 | 
				
			||||||
		sp->put(reinterpret_cast<Window>(wd), XDefaultGC(disp, XDefaultScreen(disp)), 0, 0, x, y, sp->pixel_size.width, sp->pixel_size.height);
 | 
							sp->put(reinterpret_cast<Window>(wd), XDefaultGC(disp, XDefaultScreen(disp)), 0, 0, p_dst.x, p_dst.y, sp->pixel_size.width, sp->pixel_size.height);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user