123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528 |
- #
- # For a description of the syntax of this configuration file,
- # see the file kconfig-language.txt in the NuttX tools repository.
- #
- config NX
- bool "NX Graphics"
- default n
- select NXGLIB
- select NXFONTS
- ---help---
- Enables overall support for graphics library and NX
- if NX
- config NX_LCDDRIVER
- bool "LCD driver"
- default y
- depends on LCD
- ---help---
- By default, the NX graphics system uses the frame buffer driver interface
- defined in include/nuttx/video/fb.h. However, if LCD is support is enabled,
- this option is provided to select, instead, the LCD driver interface
- defined in include/nuttx/lcd/lcd.h.
- config NX_NDISPLAYS
- int "Maximum number of displays supported"
- default 1
- range 1 9
- ---help---
- The maximum number of displays that can be supported by the NX server.
- Normally this takes the value one but may be increased to support systems
- with multiple displays.
- config NX_NPLANES
- int "Number of Color Planes"
- default 1
- range 1 8
- ---help---
- Some YUV color formats requires support for multiple planes, one for
- each color component. Unless you have such special hardware (and
- are willing to debug a lot of untested logic), this value should be
- set to 1.
- config NX_RAMBACKED
- bool "RAM backed windows"
- default n
- ---help---
- If this option is selected, then windows may be optionally created
- with a RAM framebuffer backing up the window content. Rending into
- the window will result in rending into the backup framebuffer, then
- updating the physical display from the framebuffer.
- The advantage of this option is that the application that manages
- window will no longer receive redraw() callbacks. Those calls
- normally occur when a window "above" moves exposing a portion of the
- window below. If this option is selected, then the system will
- redraw the exposed portion of the window from the backup framebuffer
- without intervention of the window applications. This greatly
- reduces the complexity of the application and performance of the
- window at the expense of increased memory usage.
- Redraw requests in other cases are also suppressed: Changes to window
- position, size, etc. As a consequence, some manual updates will be
- required when certain events occur (like removing a toolbar from a
- window).
- An exception is the case when the window is resized to a wider and/or
- taller size. In that case, the redraw callback will till occur.
- It is necessary in that case to provide new graphic content for the
- extended window area.
- NOTE: A significant amount of RAM, usually external SDRAM, may be
- required to use per-window framebuffers.
- choice
- prompt "Cursor support"
- default NX_NOCURSOR
- config NX_NOCURSOR
- bool "No cursor support"
- config NX_SWCURSOR
- bool "Software cursor support"
- depends on !NX_LCDDRIVER && NX_DISABLE_1BPP && NX_DISABLE_2BPP && NX_DISABLE_4BPP && !BUILD_KERNEL
- ---help---
- Software cursor support has several dependencies are due to un-
- implemented cursor capabilities. This assumes the following:
- 1. You are using a framebuffer hardware interface. This is
- because the logic to implement this feature on top of the LCD
- interface has not been implemented.
- 2. The pixel depth is greater then or equal to 8-bits (8-bpp,
- 16-bpp, 24/32/-bpp). This is because the logic to handle
- pixels smaller than 1-byte has not been implemented,
- 3. For FLAT and PROTECTED builds only. In those builds, the
- cursor image resides in the common application space and is
- assumed to pesist as long as needed. But with the KERNEL
- build, the image will lie in a process space and will not be
- generally available. In that case, we could keep the image in
- a shared memory region or perhaps copy the image into a kernel
- internal buffer. Neither of those are implemented.
- config NX_HWCURSOR
- bool "Hardware cursor support"
- depends on FB_HWCURSOR && EXPERIMENTAL
- ---help---
- Hardware cursor support has not been implemented, hence the
- EXPERIMENTAL dependency.
- endchoice # Cursor support
- config NX_HWCURSORIMAGE
- bool "Support hardware cursor images"
- default n
- depends on NX_HWCURSOR
- config NX_BGCOLOR
- hex "Initial background color"
- default 0x0
- ---help---
- NX will clear the background plane initially. This is the default
- color that will be used when the background is cleared. Note: This
- logic would have to be extended if you want to support multiple
- color planes.
- config NX_ANTIALIASING
- bool "Anti-aliasing support"
- default n
- depends on (!NX_DISABLE_16BPP || !NX_DISABLE_24BPP || !NX_DISABLE_32BPP) && !NX_LCDDRIVER
- ---help---
- Enable support for anti-aliasing when rendering lines as various
- orientations.
- config NX_WRITEONLY
- bool "Write-only Graphics Device"
- default y if NX_LCDDRIVER && LCD_NOGETRUN
- default n if !NX_LCDDRIVER || !LCD_NOGETRUN
- ---help---
- Define if the underlying graphics device does not support read operations.
- Automatically defined if NX_LCDDRIVER and LCD_NOGETRUN are
- defined.
- config NX_UPDATE
- bool "Display update hooks"
- default FB_UPDATE && !NX_LCDDRIVER
- ---help---
- Enable a callout to inform some external module that the display has
- been updated. This would be useful in a couple for cases.
- - When a serial LCD is used, but a framebuffer is used to access the
- LCD. In this case, the update callout can be used to refresh the
- affected region of the display.
- - When VNC is enabled. This is case, this callout is necessary to
- update the remote frame buffer to match the local framebuffer.
- When this feature is enabled, some external logic must provide this
- interface:
- fb_vtable_s
- {
- int (*updatearea)(FAR struct fb_vtable_s *vtable,
- FAR const struct fb_area_s *area);
- };
- That is the function that will handle the notification. It
- receives the rectangular region that was updated in the provided
- plane.
- menu "Supported Pixel Depths"
- config NX_DISABLE_1BPP
- bool "Disable 1 BPP"
- default y
- select NXFONTS_DISABLE_1BPP if NXFONTS
- ---help---
- NX supports a variety of pixel depths. You can save some memory by disabling
- support for unused color depths. The selection disables support for 1BPP
- pixel depth.
- config NX_DISABLE_2BPP
- bool "Disable 2 BPP"
- default y
- select NXFONTS_DISABLE_2BPP
- ---help---
- NX supports a variety of pixel depths. You can save some memory by disabling
- support for unused color depths. The selection disables support for 2BPP
- pixel depth.
- config NX_DISABLE_4BPP
- bool "Disable 4 BPP"
- select NXFONTS_DISABLE_4BPP if NXFONTS
- default y
- ---help---
- NX supports a variety of pixel depths. You can save some memory by disabling
- support for unused color depths. The selection disables support for 4BPP
- pixel depth.
- config NX_DISABLE_8BPP
- bool "Disable 8 BPP"
- default y
- select NXFONTS_DISABLE_8BPP if NXFONTS
- ---help---
- NX supports a variety of pixel depths. You can save some memory by disabling
- support for unused color depths. The selection disables support for 8BPP
- pixel depth.
- config NX_DISABLE_16BPP
- bool "Disable 16 BPP"
- default y
- select NXFONTS_DISABLE_16BPP if NXFONTS
- ---help---
- NX supports a variety of pixel depths. You can save some memory by disabling
- support for unused color depths. The selection disables support for 16BPP
- pixel depth.
- config NX_DISABLE_24BPP
- bool "Disable 24 BPP"
- default y
- select NXFONTS_DISABLE_24BPP if NXFONTS
- ---help---
- NX supports a variety of pixel depths. You can save some memory by disabling
- support for unused color depths. The selection disables support for 24BPP
- pixel depth.
- config NX_DISABLE_32BPP
- bool "Disable 32 BPP"
- default y
- select NXFONTS_DISABLE_32BPP if NXFONTS
- ---help---
- NX supports a variety of pixel depths. You can save some memory by disabling
- support for unused color depths. The selection disables support for 32BPP
- pixel depth.
- endmenu
- config NX_PACKEDMSFIRST
- bool "Packed MS First"
- default y
- select NXFONTS_PACKEDMSFIRST if NXFONTS
- select LCD_PACKEDMSFIRST if LCD
- ---help---
- If a pixel depth of less than 8-bits is used, then NX needs to know if the
- pixels pack from the MS to LS or from LS to MS
- menu "Input Devices"
- config NX_XYINPUT
- bool
- default n
- choice
- prompt "Mouse/Touchscreen Support"
- default NX_XYINPUT_NONE
- config NX_XYINPUT_NONE
- bool "No X/Y input device"
- ---help---
- There is no X/Y positional input device connected
- config NX_XYINPUT_MOUSE
- bool "Mouse device support"
- select NX_XYINPUT
- ---help---
- X/Y positional input is provided by a mouse. The only difference
- between the mouse and touchscreen selection is in the presence or
- absence of the mouse buttons. This difference is not used within
- NuttX itself, however, graphics applications may need this
- information, for example, to handle the different ways that graphic
- elements are selected and dragged.
- config NX_XYINPUT_TOUCHSCREEN
- bool "Touchscreen device support"
- select NX_XYINPUT
- ---help---
- X/Y positional input is provided by a touchscreen. The only difference
- between the mouse and touchscreen selection is in the presence or
- absence of the mouse buttons. This difference is not used within
- NuttX itself, however, graphics applications may need this
- information, for example, to handle the different ways that graphic
- elements are selected and dragged.
- endchoice # Mouse/Touchscreen Support
- config NX_KBD
- bool "Keyboard Support"
- default n
- ---help---
- Build in support of keypad/keyboard input.
- endmenu
- menu "Framed Window Borders"
- config NXTK_BORDERWIDTH
- int "Border Width"
- default 4
- ---help---
- Specifies the width of the border (in pixels) used with framed windows.
- The default is 4.
- config NXTK_DEFAULT_BORDERCOLORS
- bool "Use Default Border Colors"
- default y
- ---help---
- If this option is defined, the default system border colors will be
- used on framed windows. Otherwise, additional options will be
- present so that you can define custom board colors.
- if !NXTK_DEFAULT_BORDERCOLORS
- config NXTK_BORDERCOLOR1
- hex "Border Color"
- default 0x0
- ---help---
- Specify the colors of the border used with framed windows.
- NXTL_BORDERCOLOR1 is the "normal" color of the border.
- NXTK_BORDERCOLOR2 is the shadow side color and so is normally darker.
- NXTK_BORDERCOLOR3 is the shiny side color and so is normally brighter.
- config NXTK_BORDERCOLOR2
- hex "Darker Border Color"
- default 0x0
- ---help---
- Specify the colors of the border used with framed windows.
- NXTL_BORDERCOLOR1 is the "normal" color of the border.
- NXTK_BORDERCOLOR2 is the shadow side color and so is normally darker.
- NXTK_BORDERCOLOR3 is the shiny side color and so is normally brighter.
- config NXTK_BORDERCOLOR3
- hex "Brighter Border Color"
- default 0x0
- ---help---
- Specify the colors of the border used with framed windows.
- NXTL_BORDERCOLOR1 is the "normal" color of the border.
- NXTK_BORDERCOLOR2 is the shadow side color and so is normally darker.
- NXTK_BORDERCOLOR3 is the shiny side color and so is normally brighter.
- endif # !NXTK_DEFAULT_BORDERCOLORS
- endmenu
- config NXTK_AUTORAISE
- bool "Autoraise"
- default n
- ---help---
- If set, a window will be raised to the top if the mouse position is over a
- visible portion of the window. Default: A mouse button must be clicked over
- a visible portion of the window.
- menuconfig NXTERM
- bool "NxTerm"
- default n
- ---help---
- Enables building of the NxTerm driver.
- if NXTERM
- comment "NxTerm Output Text/Graphics Options"
- config NXTERM_BPP
- int "NxTerm BPP"
- default 1 if !NX_DISABLE_1BPP
- default 2 if !NX_DISABLE_2BPP
- default 4 if !NX_DISABLE_4BPP
- default 8 if !NX_DISABLE_8BPP
- default 16 if !NX_DISABLE_16BPP
- default 24 if !NX_DISABLE_24BPP
- default 32 if !NX_DISABLE_32BPP
- ---help---
- Currently, NxTerm supports only a single pixel depth. This
- configuration setting must be provided to support that single pixel depth.
- Default: The smallest enabled pixel depth. (see NX_DISABLE_*BPP)
- config NXTERM_CURSORCHAR
- int "Character code to use as the cursor"
- default 137
- ---help---
- The bitmap code to use as the cursor. Default '_' (137)
- config NXTERM_MXCHARS
- int "Max Characters on Display"
- default 128
- ---help---
- NxTerm needs to remember every character written to the console so
- that it can redraw the window. This setting determines the size of some
- internal memory allocations used to hold the character data. Default: 128.
- config NXTERM_CACHESIZE
- int "Font Cache Size"
- default 16
- ---help---
- NxTerm supports caching of rendered fonts. This font caching is required
- for two reasons: (1) First, it improves text performance, but more
- importantly (2) it preserves the font memory. Since the NX server runs on
- a separate server thread, it requires that the rendered font memory persist
- until the server has a chance to render the font. Unfortunately, the font
- cache would be quite large if all fonts were saved. The NXTERM_CACHESIZE
- setting will control the size of the font cache (in number of glyphs). Only that
- number of the most recently used glyphs will be retained. Default: 16.
- NOTE: There can still be a race condition between the NxTerm driver and the
- NX task. If you every see character corruption (especially when printing
- a lot of data or scrolling), then increasing the value of NXTERM_CACHESIZE
- is something that you should try. Alternatively, you can reduce the size of
- MQ_MAXMSGSIZE which will force NxTerm task to pace the server task.
- NXTERM_CACHESIZE should be larger than MQ_MAXMSGSIZE in any event.
- config NXTERM_LINESEPARATION
- int "Line Separation"
- default 0
- ---help---
- This the space (in rows) between each row of test. Default: 0
- config NXTERM_NOWRAP
- bool "No wrap"
- default n
- ---help---
- By default, lines will wrap when the test reaches the right hand side
- of the window. This setting can be defining to change this behavior so
- that the text is simply truncated until a new line is encountered.
- comment "NxTerm Input options"
- config NXTERM_NXKBDIN
- bool "NX KBD input"
- default n
- ---help---
- Take input from the NX keyboard input callback. By default, keyboard
- input is taken from stdin (/dev/console). If this option is set, then
- the interface nxterm_kdbin() is enabled. That interface may be driven
- by window callback functions so that keyboard input *only* goes to the
- top window.
- NOTE: nxterm_kdbin() is an internal OS API. It can be accessed by
- applications via the boardctl(BOARDIOC_NXTERM) interface.
- The logic path is complex in this case: (1) The keyboard input is
- received by an application listener thread and injected into NX via
- nx_kbdin(). NX sends (2) the keyboard input to single the NX window
- that has focus. That window then (3) gives the keyboard input to the
- single NxTerm associated with the window via boardctl(BOARDIOC_NXTERM).
- NOTE: If CONFIG_NXTERM_NXKBDIN not defined, then NxTerm input coming
- directly from /dev/console. That works well if there is only a single
- NxTerm window. But if there are multiple NxTerm windows, then it is
- anyone's guess which will receive the keyboard input. That does not
- work well in such cases.
- config NXTERM_KBDBUFSIZE
- int "Keyboard Input Buffer Size"
- default 16
- ---help---
- If NXTERM_NXKBDIN is enabled, then this value may be used to
- define the size of the per-window keyboard input buffer. Default: 16
- config NXTERM_NPOLLWAITERS
- int "Number of Poll Waiters"
- default 4
- ---help---
- The number of threads that can be waiting for read data available.
- Default: 4
- endif # NXTERM
- comment "NX server options"
- config NX_BLOCKING
- bool "Blocking"
- default n
- ---help---
- Open the client message queues in blocking mode. In this case,
- nx_eventhandler() will not return until a message is received and processed.
- config NX_MXSERVERMSGS
- int "Max Server Messages"
- default 32
- ---help---
- Specifies the maximum number of messages that can fit in the message queues.
- No additional resources are allocated, but this can be set to prevent
- flooding of the client or server with too many messages (PREALLOC_MQ_MSGS
- controls how many messages are pre-allocated).
- config NX_MXCLIENTMSGS
- int "Max Client Messages"
- default 16
- ---help---
- Specifies the maximum number of messages that can fit in the message queues.
- No additional resources are allocated, but this can be set to prevent
- flooding of the client or server with too many messages (PREALLOC_MQ_MSGS
- controls how many messages are pre-allocated).
- config NXSTART_EXTERNINIT
- bool "External Display Initialization"
- default n
- select LCD_EXTERNINIT if LCD && LCD_FRAMEBUFFER && NX_LCDDRIVER
- ---help---
- Define to support external display initialization by platform-
- specific code. If this option is defined, then nxmu_start()
- will call board_graphics_setup(CONFIG_NXSTART_DEVNO) to
- initialize the graphics device. This option is necessary if
- display is used that cannot be initialized using the standard
- LCD or framebuffer interfaces.
- config NXSTART_SERVERPRIO
- int "NX Server priority"
- default 110
- ---help---
- Priority of the NX server. Default: 110.
- NOTE: NXSTART_SERVERPRIO should have a relatively high priority to
- avoid data overrun race conditions.
- config NXSTART_SERVERSTACK
- int "NX Server Stack Size"
- default DEFAULT_TASK_STACKSIZE
- ---help---
- NX server thread stack size (in multi-user mode). Default 2048
- config NXSTART_DEVNO
- int "LCD Device Number"
- default 0
- depends on NX_LCDDRIVER || NXSTART_EXTERNINIT
- ---help---
- LCD device number (in case there are more than one LCDs connected).
- Default: 0
- source "graphics/vnc/Kconfig"
- endif # NX
|