<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
	
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->


 
	
<meta>
      <topic id="textshared0106050400xml" indexer="include" status="PUBLISH">
         <title xml-lang="en-US" id="tit">Graphics</title>
         <filename>/text/shared/01/06050400.xhp</filename>
      </topic>
   </meta>
   <body>
      <section id="graphics">
         <paragraph xml-lang="en-US" id="hd_id0611200904373284" role="heading" level="1" l10n="NEW"><link href="text/shared/01/06050400.xhp" name="Graphics">Graphics</link></paragraph>
         <paragraph xml-lang="en-US" id="par_id0611200904373226" role="paragraph" l10n="NEW"><ahelp hid=".">Displays the different graphics that you can use as bullets in a bulleted list.</ahelp></paragraph>
      </section>
      <section id="howtoget">
         <embed href="text/shared/00/00040500.xhp#graphics"/>
      </section>
<bookmark xml-lang="en-US" branch="hid/CUI_HID_VALUESET_NUMBMP" id="bm_id0611200904382857" localize="false"/>
<paragraph xml-lang="en-US" id="hd_id0611200904361573" role="heading" level="2" l10n="NEW">Selection</paragraph>
      <paragraph xml-lang="en-US" id="par_id061120090436150" role="paragraph" l10n="NEW"><ahelp hid=".">Click the graphics that you want to use as bullets.</ahelp></paragraph>
<bookmark xml-lang="en-US" branch="hid/cui:CheckBox:RID_SVXPAGE_PICK_BMP:CB_LINKED" id="bm_id0611200904355924" localize="false"/>
<paragraph xml-lang="en-US" id="hd_id061120090436157" role="heading" level="2" l10n="NEW">Link graphics</paragraph>
      <paragraph xml-lang="en-US" id="par_id0611200904361575" role="paragraph" l10n="NEW"><ahelp hid=".">If enabled, the graphics are inserted as links. If not enabled, the graphics are embedded into the document.</ahelp></paragraph>
      <section id="relatedtopics">
         <paragraph xml-lang="en-US" id="par_id061120090437338" role="paragraph" l10n="NEW"><link href="text/shared/01/06050600.xhp" name="Position tab (Numbering/Bullets dialog)">Position tab (Bullets and Numbering dialog)</link></paragraph>
         <paragraph xml-lang="en-US" id="par_id0611200904373391" role="paragraph" l10n="NEW"><link href="text/shared/01/06050500.xhp" name="Options tab (Numbering/Bullets dialog)">Options tab (Bullets and Numbering dialog)</link></paragraph>
      </section>
   </body>
</helpdocument>